home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol079 / rbbspc.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-01-14  |  47.4 KB  |  952 lines

  1. 3  REM $linesize: 132
  2. 43  DEFINT A-Z:CLS ':GOSUB 60200:IF MC>0 THEN DEF SEG=MC::PO=(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC):IF PEEK(PO)=&H1 OR &H2 THEN POKE(PO),&H9 'remove ' for mlink
  3. 90  CLOSE:CLEAR:DEFINT A-Z:DIM LG$(5):GOSUB 64000:WIDTH 80:SCREEN 0,0,0:KEY OFF:PA$=CHR$(19):BA$=CHR$(7):BK2$=CHR$(8):XA$=CHR$(19):XON$=CHR$(17):CLS:DEF FNTI!=CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60)+(VAL(MID$(TIME$,4,2))*60)+(VAL(MID$(TIME$,7,2))*1)))
  4. 92  DEF FNCD$(A1$)=CHR$(VAL(MID$(A1$,7,2)))+CHR$(VAL(MID$(A1$,1,2)))+CHR$(VAL(MID$(A1$,4,2))):DEF FNUD$(A1$)=RIGHT$(STR$(ASC(MID$(A1$,2))),2)+"/"+RIGHT$(STR$(ASC(MID$(A1$,3))),2)+"/"+RIGHT$(STR$(ASC(A1$)),2)
  5. 96  DEF FNDC$(A1$)=RIGHT$(A1$,2)+LEFT$(A1$,2)+MID$(A1$,4,2):DEF FNSS$(A1$)=LEFT$(A1$+TC$,INSTR(A1$+TC$,TC$)-1):DEF SEG=0:GOSUB 60200:A!=FRE("A"):TI$=TIME$:ON ERROR GOTO 13000:DEF SEG
  6. 115  CR$=CHR$(13):LF$=CHR$(10):ABT$=CHR$(11):VA$="CPC12.2C (compilable)":CA$="RBBS-PC.DEF":DIM BUL$(6),SA(12),MD(18),UA(12),FS(8)
  7. 118  OPEN "I",#1,CA$:INPUT #1,FA$,RA$,PB$,PC$,NA$,NB$,CB,AA,AB,TV!,ME,LA,UB$,XPR,BC,BA,PRT,CE,MF$,MG$,MH$,MI$,MJ$,CQ$,CQ,OA,UE,PL,LW,GA,WA,MK$:INPUT#1,MES$,MN$,CF$,CG$,UF$,LB$,WB$,ND$,DIR$,CP$,OB,SD,TX$,DA,FGR,BGR,BDR,RC$,CH$,OC$,OD$
  8. 119  INPUT#1,HE1$,HE2$,HE3$,HE4$,HE5$,HE6$,HE7$,HE8$,BUL$(0),BUL$(1),BUL$(2),BUL$(3),BUL$(4),BUL$(5),BUL$(6),RD,BD:INPUT#1,MO,DB,SE,FB$,SF,KA$,VB,SA(1),SA(2),SA(3),SA(4),SA(5),SA(6),SA(7),SA(8),SA(9),SA(10),SA(11),SA(12),PD$,MP,CHS,UPS,MTERM,DAY
  9. 121  INPUT#1,MD(1),MD(2),MD(3),MD(4),MD(5),MD(6),MD(7),MD(8),MD(9),MD(10),MD(11),MD(12),MD(13),MD(14),MD(15),MD(16),MD(17),MD(18),FS(1),FS(2),FS(3),FS(4),FS(5),FS(6),FS(7),FS(8),UA(1),UA(2),UA(3),UA(4),UA(5),UA(6),UA(7),UA(8),UA(9),UA(10),UA(11),UA(12)
  10. 122  IF CE THEN MID$(VA$,10)="--(compiled)
  11. 123  PRINT VB$;VA$:PRINT"Free memory: ";FRE("A"):PRINT:PRINT"Enter:":FOR I=1 TO 11:INPUT#1,A$:PRINT A$:NEXT:A$="":FOR I=1 TO 10:KEY I,""
  12. 125  NEXT:IF MC THEN GOSUB 60450:GOSUB 60310:GOSUB 60240
  13. 127  BK$=CHR$(8)+CHR$(32)+CHR$(8):BK1$=CHR$(29)+CHR$(32)+CHR$(29):MQ=72:TY!=3*60:TAA=120:IF CP$="COM2"THEN LSB=&H2F8:MSB=&H2F9:LCR=&H2FB:MCR=&H2FC:LSR=&H2FD:MSR=&H2FE ELSE LSB=&H3F8:MSB=&H3F9:LCR=&H3FB:MCR=&H3FC:LSR=&H3FD:MSR=&H3FE
  14. 130  DIM M(250,2),A$(30),B$(128):GOSUB 135:GOTO 175
  15. 135  CLOSE 2:LC=0:R=2:GOSUB 167:IF LOF(1)=0 THEN LSET R$=" 1      -1 0"+SPACE$(39)+"-1 0 0 0 0 0 0    0 0 0":PUT 1 ELSE GET 1
  16. 147  LE=VAL(LEFT$(R$,8)):AVA=VAL(MID$(R$,9,2)):AC=VAL(MID$(R$,52,2)):SG=VAL(MID$(R$,54,2)):LH=VAL(MID$(R$,56,2))
  17. 150  GET 1,R:IF MID$(R$,116,1)=CHR$(226)THEN DD=-1
  18. 155  RR=VAL(MID$(R$,118)):IF DD THEN 165 ELSE IF RR<1 THEN RR=1:IF EOF(1)THEN FC=M(1,2):RETURN
  19. 160  LC=LC+1:M(LC,1)=R:M(LC,2)=VAL(MID$(R$,2,4))
  20. 165  R=R+RR:DD=0:GOTO 150
  21. 167  CLOSE 1:OPEN "R",1,MES$
  22. 170  FIELD 1,128 AS R$:RETURN
  23. 175  SOH$=CHR$(1):EOT$=CHR$(4):ACK$=CHR$(6):NAK$=CHR$(21):CAN$=CHR$(24):ESC$=CHR$(27):STP$=CHR$(0)+CHR$(112):NE=&H100:FD=0:TBA=NOT FD:BE=FD:EB=10:GOSUB 56000:CDX=LOF(2)/64
  24. 181  GET 2,CDX:IF LEFT$(CL$,13) = STRING$(13,CHR$(0)) THEN CDX=CDX-1
  25. 187  IF LH THEN GOSUB 480:LPRINT:LPRINT"RBBS-PC Version ";VA$;" up at "TIM$+TH$+DATE$:GOSUB 50500
  26. 200  IF INP(MSR)>127 THEN OPEN CP$+T5$ AS 3:GOSUB 44000:GOTO 440 ELSE OUT MCR,&H4:CLOSE 3:GOSUB 50500
  27. 201  OPEN CP$+TN$ AS #3:PRINT#3,"ATZ":GOSUB 50510:IF SD THEN MB$="M1" ELSE MB$="M0
  28. 220  IF CB >0 THEN PRINT#3,"ATS2=255Q1S0=255S10=20";MB$ ELSE PRINT#3,"ATS2=255Q1S10=20";MB$
  29. 221  GOSUB 480:PRINT:PRINT"RBBS-PC ready for calls at "TIM$+TH$+DATE$:PRINT:PRINT"<< Screen clears to prevent display burn-in. >>":PRINT:IF NOT PRT THEN LOCATE,,0
  30. 235  TCA!=FNTI!:GOSUB 49000
  31. 239  RB!=0:IF CB>0 THEN RB!=FNTI!:COLOR 7,0,0 ELSE COLOR FGR,BGR,BDR
  32. 240  X=1:WHILE(INP(MSR)AND &H40)=0:X$=INKEY$:FK$=X$:GOSUB 60000
  33. 250  IF X$=CHR$(27) OR SG THEN 253 ELSE 256
  34. 253  TI!=FNTI!:GOSUB 14500:LJ=-1:IF KA$<>"NONE" THEN LOCATE 24,1:INPUT "Enter PASSWORD";Z$:GOSUB 5000:IF Z$ <> KA$ THEN 13549
  35. 255  LOCATE 24,1:PRINT "Sysop in.":BE=-1:GR=-1:CI$="LOCAL":UG=SE:GOTO 470
  36. 256  IF X$=STP$ THEN SYSTEM
  37. 260  IF RB!>0 THEN IF FNTI!-RB!>45 THEN RB!=0:RBC=0:IF(PRT AND CB)THEN PRINT"Ringback timeout
  38. 265  MMM!=FNTI!-TCA!:IF MMM!>TAA THEN LOCATE,,0:CLS:TCA!=FNTI!
  39. 270  WEND:IF CB=0 THEN 320
  40. 275  WHILE(INP(MSR)AND &H40):IF PRT THEN SOUND 3000,1:SOUND 4000,2:SOUND 32767,6
  41. 277  WEND:IF LOC(3)THEN X$=INPUT$(LOC(3),3)
  42. 280  PRINT#3,"ATS1?
  43. 290  INPUT#3,X$:IF LEN(X$)=0 THEN 290 ELSE IF RBC=0 THEN RBC=2 ELSE IF VAL(X$)<RBC THEN RBC=RBC+1
  44. 300  IF PRT THEN PRINT "Ring ";X$,"Ringback ";(RBC-2)
  45. 310  IF (RBC-2)<CB THEN 239
  46. 320  CLOSE 3:OPEN CP$+T5$ AS #3:PRINT#3,"ATQ1E1A":Q=&H180:QQ=&H60:IF PRT THEN LOCATE,,1
  47. 325  TCC!=FNTI!
  48. 330  IF INP(MSR)>127 THEN 333
  49. 331  IF FNTI!-TCC!>30 THEN 10595
  50. 332  GOTO 330
  51. 333  GOSUB 21280:GOSUB 50500:OUT LCR,&H3:BE=TBA:TCC!=FNTI!
  52. 335  IF INP(MSR)<128 THEN 10595 ELSE IF FNTI!-TCC!>30 THEN 10595 ELSE IF EOF(3)THEN 335
  53. 340  A=ASC(INPUT$(LOC(3),3)):IF A=13 THEN 350 ELSE IF A=141 THEN OUT LCR,&H1A:BE=FD:GOTO 350
  54. 345  SWAP Q,QQ:GOSUB 1654:OUT LCR,&H3:BE=TBA:IF FNTI!-TCC!>30 THEN 10595 ELSE 335
  55. 350  I=0:GOSUB 480:IF Q=&H60 THEN BPS=-3 ELSE BPS=-1
  56. 355  TI!=FNTI!:IF TI!>CTI!THEN GOSUB 42000:GOSUB 21280
  57. 360  UC=0:PRINT#3,LF$:PRINT#3,"CAN YOUR TERMINAL DISPLAY LOWER CASE";:GOSUB 1500:Z$=B$(1):GOSUB 5000:PRINT#3,TA$:IF BE THEN PE$="NO PARITY, 8 DATA BITS, 1 STOP BIT." ELSE PE$="EVEN PARITY, 7 DATA BITS, 1 STOP BIT.
  58. 365  IF BPS=-3 THEN BF$="1200 BAUD, " ELSE BF$="300 BAUD, 
  59. 366  A$=VB$+VA$:GOSUB 1400:A$=LF$+"OPERATING AT "+BF$+PE$:CR=2:GOSUB 1400:IF NO THEN UC=-1 ELSE IF NOT YES THEN 360
  60. 369  F$=WB$:GR=0:IF BE AND GA THEN A$="Do you want graphics":GOSUB 1500:IF YES THEN GR=-1:GOSUB 43030
  61. 370  TV!=TV!*60:STI=OA:CR=0:GOSUB 6000:CR=2:STI=0:GOSUB 1400:TDA=0:TV!=TV!/60
  62. 400  A1$="What is your ":GOSUB 12500:IF TEX THEN I=1:GOTO 10620
  63. 440  IF FE$=PB$AND LK$=PC$THEN CI$="REMOTE":GOTO 470
  64. 445  IF INSTR(NAM$,"SYSOP") OR INSTR(NAM$,NA$+TB$+NB$) THEN I=1:GOTO 10620
  65. 455  FOR J=1 TO LEN(NAM$):X=ASC(MID$(NAM$,J,1)):IF(X<65 OR X>90)AND(X<>32 AND X<>39 AND X<>45 AND X<>46)THEN 400
  66. 465  NEXT:GOTO 500
  67. 470  FE$=NA$:LK$=NB$:NAM$="SYSOP":UG=SE:SH=-1:PRT=TBA:MQ=72:GOSUB 480:IF LJ THEN SG=FD:GOSUB 15010:GOTO 830 ELSE 830
  68. 480  TI$=TIME$:D$=LEFT$(DATE$,6)+RIGHT$(DATE$,2)
  69. 482  TIM$=TIME$:IF VAL(LEFT$(TIM$,2))=12 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN
  70. 483  IF VAL(LEFT$(TIM$,2))>11 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))-12),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN ELSE TIM$=LEFT$(TIM$,5)+" AM":RETURN
  71. 500  GET 1,1:IF NAM$=MID$(R$,21,LEN(NAM$))THEN LL=-1:A$="Welcome back, "+FE$+".":GOSUB 1400
  72. 540  TEA$=NAM$:GOSUB 12600:IF NOT FG THEN 700 ELSE UG=CVI(SL$):IF UG<MO THEN I=3:GOTO 10620 ELSE UIX#=LOC(2):CI$=CS$:I=0:MR=4:KEE$=PW$:MES=0:IF Q=3 THEN Z$=B$(3):TDA=1:GOSUB 677 ELSE GOSUB 675
  73. 630  IF PF THEN I=4:GOTO 10620
  74. 643  IF UG>=SE THEN GOSUB 1400:A$="You have SYSOP privileges":CR=2:GOSUB 1400 ELSE GOSUB 41070
  75. 645  NF=0:LM$=FNDC$(FNUD$(LND$)):IF MID$(LM$,3,1)=TB$ THEN MID$(LM$,3,1)="0
  76. 655  IF MID$(LM$,5,1)=TB$ THEN MID$(LM$,5,1)="0
  77. 660  GOTO 800
  78. 665  IF KEE$=PW$ THEN PF=0:RETURN
  79. 667  TDA=0
  80. 670  TDA=TDA+1:IF TDA>MR THEN PF=-1:RETURN
  81. 675  A$=P$+" (dots will echo)":GOSUB 45010:Z$=B$(1)
  82. 677  GOSUB 5000:Z$=Z$+SPACE$(15-LEN(Z$)):IF KEE$=Z$ THEN PF=0:RETURN
  83. 680  IF MES THEN A$="Sorry, wrong password":GOSUB 1400:GOTO 670 ELSE 670
  84. 700  NF=-1:GOSUB 12630:UG=DB: IF UG < MO THEN I=3:GOTO 10620
  85. 710  A1$=" are you calling from":GOSUB 12950:A$=NAM$+" from "+Z$:GOSUB 1400:LSET CS$=Z$:CI$=Z$+TC$:A$="Is this correct":GOSUB 1500:GOSUB 1400:IF NOT YES THEN 400
  86. 755  GOSUB 12800:A$="Type PASSWORD again for double check":GOSUB 45010:SWAP Z$,B$(1):GOSUB 5000:IF B$(1)<>Z$THEN A$=P$+"s don't match!":GOSUB 1400:GOTO 755
  87. 760  GOSUB 5000:LSET PW$=Z$:GOSUB 1400:A$=FE$+", your password is needed to logon again.":CR=2:GOSUB 1400:LSET N$=NAM$:TFA=UG:GOSUB 12900
  88. 800  HUG=UG:GOSUB 1400:A$="Logging "+NAM$+" to disk...":GOSUB 1400:TGA=CVI(MID$(OP$,1,2))+1:LO=CVI(MID$(OP$,3,2)):LF=CVI(MID$(OP$,5,2)):MQ=CVI(MID$(OP$,7,2)):BA=CVI(MID$(OP$,9,2)):XPR=CVI(MID$(OP$,11,2)):PL=ASC(MID$(OP$,13))
  89. 802  IF D$<>LEFT$(TD$,8) THEN ET=0 ELSE ET=CVI(ET$)
  90. 805  DLD=CVI(UDL$):ULD=CVI(UUL$):IF LO>LE THEN LO=0
  91. 815  LSET OP$=MKI$(TGA)+MID$(OP$,3):LSET TD$=D$+TB$+TI$:PUT 2,UIX#:IF NOT NF THEN A$="You have signed on"+STR$(TGA)+" times.":CR=2:GOSUB 1400
  92. 817  IF UE THEN A$="You have downloaded"+STR$(DLD)+" files & uploaded"+STR$(ULD)+" files":CR=2:GOSUB 1400
  93. 825  JJ=INSTR(CI$,TC$):CI$=LEFT$(CI$,(JJ-1))
  94. 830  IF UG<>DB THEN Z$=TA$:Z=0:GOSUB 5140:IF FG THEN TV!=TJA
  95. 835  IF LJ THEN 843:IF BE THEN PE$="N,8,1" ELSE PE$="E,7,1
  96. 837  Z$=NAM$+" on at "+D$+", "+TIM$+" from "+CI$+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$))
  97. 841  IF LH THEN LPRINT TC$+Z$
  98. 843  TV!=(TV!+DAY*ET)*60:IF TV!<0 THEN A$="Daily time limit exceeded!  Try tomorrow.":GOSUB 1400:GOTO 10698
  99. 844  GET 1,1:CJ=VAL(MID$(R$,11,10))+1:IF NOT SH THEN MID$(R$,21,31)=NAM$+SPACE$(31-LEN(NAM$)):MID$(R$,11,10)=STR$(CJ):PUT 1,1:IF UG>=SE THEN SH=-1
  100. 845  IF LL THEN 948
  101. 850  GOSUB 950:IF BC<1 THEN A$="Sorry, "+FE$+TI1$:GOSUB 1400:GOTO 900
  102. 851  IF SH THEN 900
  103. 855  IF OB THEN A$=FE$+", there are "+STR$(BC)+" bulletins today.  Skip them":GOSUB 1500:IF YES THEN 900
  104. 860  F$=BUL$(0):GOSUB 1790:STI=-1:GOSUB 9710:STI=0:CR=2:GOSUB 1400
  105. 900  A$=TA$:GOSUB 1400:A$="Checking message file...":CR=2:IF NOT LJ THEN GOSUB 1400
  106. 910  T=0:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,37,31),NAM$)=0 THEN IF NOT SH THEN 929
  107. 922  IF NOT SH THEN IF T THEN 927 ELSE 925
  108. 923  IF INSTR(MID$(R$,37,31),NAM$)=0 AND INSTR(MID$(R$,37,31),NA$+TB$+NB$)=0 THEN 929 ELSE IF T THEN 927
  109. 925  A$="The following message(s) may be for you.":GOSUB 1400:A$=K1$:CR=2:GOSUB 1400:T=-1
  110. 927  A$=LEFT$(R$,5):CR=1:GOSUB 1400
  111. 929  NEXT:IF NOT T THEN A$="Sorry, "+FE$+", no mail for you today.":GOSUB 1400
  112. 930  T=0:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,6,31),NAM$)=0 THEN IF NOT SH THEN 940
  113. 931  IF NOT RD THEN A$=TA$:GOTO 948
  114. 932  IF NOT SH THEN IF T THEN 938 ELSE 935
  115. 934  IF INSTR(MID$(R$,6,31),NAM$)=0 AND INSTR(MID$(R$,6,31),NA$+TB$+NB$)=0 THEN 940 ELSE IF T THEN 938
  116. 935  GOSUB 1400:A$="You have left these message(s).":GOSUB 1400:A$=K1$:CR=2:GOSUB 1400:T=-1
  117. 938  A$=LEFT$(R$,5):CR=1:GOSUB 1400
  118. 940  NEXT:IF T THEN GOSUB 1400:A$="Thanks, "+FE$+", for deleting any messages.":GOSUB 1400
  119. 948  CR=2:GOSUB 1400:A$="Entering message subsystem...":GOSUB 1400:GOSUB 950:GOTO 955
  120. 950  IF NOT PRT THEN RETURN
  121. 953  C.C=CSRLIN:C.L=POS(0):JJ=LEN(NAM$)+LEN(CI$)+LEN(FH$)+11
  122. 954  LOCATE 25,1:PRINT FH$+SPACE$(79-JJ)+NAM$+TB$+CI$+TB$+TI$;:LOCATE C.C,C.L:RETURN
  123. 955  GOSUB 4900:STI=-1:IF NF THEN F$=ND$:GOSUB 1790:GOSUB 1700:NF=FD
  124. 1200  GOSUB 49000:STI=-1:Q=0:GOSUB 1400:IF UG<SF THEN A1$=">":GOTO 1240 ELSE A1$=",1,...,12>":IF XPR THEN 1240
  125. 1220  F$=MF$:GOSUB 43030:GOSUB 45000
  126. 1240  GOSUB 41050:NH=0:IF NOT XPR THEN F$=MG$:GOSUB 43030:GOSUB 45000
  127. 1250  GOSUB 49000:GOSUB 1400:A$="Function <B,C,E,F,G,H,I,K,L,O,P,Q,R,S,U,W,X,?"+A1$:GOSUB 1500:IF Q=0 THEN 1250
  128. 1270  FOR J=1 TO Q:Z$ = B$(J):GOSUB 5000:FF = VAL(Z$): IF FF=0 THEN 1280 ELSE IF FF<1 OR FF>12 THEN GOSUB 1350:GOTO 1200
  129. 1274  IF UG < SA(FF) THEN VD$="Sysop "+Z$:GOSUB 1380:GOTO 1200
  130. 1276  ON FF GOSUB 10070,10090,10110,10280,10390,10490,10530,11000,9500,12000,10700,10930:GOTO 1200
  131. 1280  FF=INSTR("BCEFGHIKLOPQRSUWX?",Z$): IF FF=0 THEN GOSUB 1350:GOTO 1200 ELSE IF UG<MD(FF) THEN VD$="MainMenu "+Z$:GOSUB 1380:GOTO 1200
  132. 1320  ON FF GOSUB 1720,1800,2000,20000,10560,1740,1760,3900,5200,4700,900,4320,4330,4340,1330,10970,4240,1700:NEXT:GOTO 1200
  133. 1330  GOSUB 41050:IF NOT XPR THEN F$=MI$:GOSUB 43030:GOSUB 45000
  134. 1334  GOSUB 49000:GOSUB 1400:A$="FUNCTION <B,G,H,L,M,N,P,Q,S,T,U,!>":GOSUB 1500:IF Q=0 THEN GOSUB 1350:GOTO 1334
  135. 1336  Z$=B$(J):GOSUB 5000:FF=INSTR("BGHLMNPQSTU!",Z$):IF FF=0 THEN GOSUB 1360:GOTO 1330 ELSE IF UG<UA(FF) THEN VD$="Util "+Z$:GOSUB 1380:GOTO 1330
  136. 1338  ON FF GOSUB 5500,43000,1780,4100,10925,9300,5110,1200,4900,9100,10090,4200:GOTO 1330
  137. 1350  IF XPR THEN RETURN ELSE GOSUB 1400
  138. 1360  A$=FE$+", "+B$(J)+" is invalid.":GOTO 2210
  139. 1380  A$="Sorry, "+FE$+", authorization needed from sysop.":GOSUB 1400:Z$=SPACE$(5)+"SV!-"+VD$:GOSUB 5538:NI=NI+1:IF VB=0 OR NI<=VB THEN RETURN
  140. 1385  IF CINT(UIX#)<1 THEN RETURN
  141. 1390  A$="SECURITY VIOLATION!  Call sysop for reinstatement":GOSUB 1400:IF CINT(UIX#)<1 THEN I=5:GOTO 10620 ELSE GOSUB 9400:GET 2,UIX#:LSET SL$=MKI$(MO):PUT 2,UIX#:I=5:GOTO 10620
  142. 1400  RET=0:IF NOT STI OR CM THEN 1435
  143. 1410  Y$=INKEY$:FK$=Y$:GOSUB 60000
  144. 1411  IF LJ THEN 1430
  145. 1415  IF EOF(3)THEN GOSUB 42000:GOTO 1430
  146. 1420  Y$=INPUT$(1,3)
  147. 1425  IF Y$=PA$ THEN WHILE EOF(3):GOSUB 42000:WEND:GOTO 1420
  148. 1430  IF Y$=ABT$AND STI THEN 1475<UNK! {0009}>
  149. 1435  IF PRT THEN LOCATE,,1:PRINT A$;
  150. 1437  IF LJ THEN 1450
  151. 1440  IF UC THEN SWAP A$,Z$:GOSUB 5000:SWAP A$,Z$
  152. 1445  PRINT#3,A$;
  153. 1450  IF CR=1 THEN 1470
  154. 1455  IF PRT THEN PRINT
  155. 1460  IF NOT LJ THEN PRINT#3,TA$:IF LF THEN PRINT#3,LF$;
  156. 1465  IF CR=2 THEN CR=0:GOTO 1455
  157. 1470  Y$=TA$:A$=Y$:CR=0:RETURN
  158. 1475  CR=2:A$=TA$:RET=STI:STI=0:GOSUB 1410:STI=RET:RET=-1:NH=0:GOTO 1470
  159. 1500  GOSUB 42000:A!=FRE("A"):THA!=FNTI!:A=0:B=0:C=0:Q=1:EOL=0:YES=0:B$=TA$:NO=0:A$=A$+"? ":CR=1:GOSUB 1400:IF LJ THEN LINE INPUT"",B$:GOTO 1575 ELSE IF BA THEN PRINT#3,BA$;
  160. 1525  WHILE EOF(3):GOSUB 42000:MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
  161. 1530  Y$=INKEY$:FK$=Y$:GOSUB 60000
  162. 1531  IF Y$<>TA$ THEN 1545
  163. 1535  WEND:IF INP(MSR)<128 THEN 10595
  164. 1540  Y$=INPUT$(1,3):IF Y$=CHR$(127)THEN 1635
  165. 1545  IF Y$=BK2$ OR Y$=BA$ THEN 1635
  166. 1550  IF Y$<TB$ AND Y$<>CR$THEN 1525
  167. 1555  IF PRT THEN PRINT Y$;
  168. 1557  IF NOT SI THEN PRINT#3,Y$; ELSE PRINT#3,".";
  169. 1560  IF Y$=CR$THEN 1570
  170. 1563  IF LEN(B$)=>254 THEN A$="Input too long!":GOSUB 1400:GOTO 1500
  171. 1565  B$=B$+Y$:GOTO 1525
  172. 1570  IF LF THEN PRINT#3,LF$;
  173. 1575  A=INSTR(B$,";"):IF A=0 THEN 1620
  174. 1580  B$(1)=LEFT$(B$,A-1):A=A+1
  175. 1585  B=INSTR(A,B$,";"):C=B-A:IF C<1 THEN EOL=-1:C=128
  176. 1595  BB$=MID$(B$,A,C):IF BB$<>TA$ THEN Q=Q+1:B$(Q)=BB$
  177. 1605  IF NOT EOL AND Q<10 THEN A=B+1:GOTO 1585
  178. 1610  IF LEN(B$)>64 THEN A$="Try again, "+FE$+".":GOSUB 1400:GOTO 1500 ELSE 1625
  179. 1620  B$(1)=B$:Q=1:IF B$=TA$ THEN Q=0:RETURN
  180. 1625  SWAP Z$,B$:GOSUB 5000:SWAP Z$,B$:IF LEFT$(B$,1)="Y" THEN YES=-1 ELSE IF LEFT$(B$,1)="N" THEN NO=-1
  181. 1628  IF B$(Q)="NS" OR B$(Q)="ns" THEN NO=0:NH=-1:B$(Q)=TA$:IF Q>1 THEN Q=Q-1
  182. 1629  IF B$="RE" THEN RE=-1 ELSE IF B$="K" THEN KB=-1
  183. 1630  RETURN
  184. 1635  IF LEN(B$)=0 THEN 1525
  185. 1640  B$=LEFT$(B$,LEN(B$)-1):IF PRT THEN PRINT BK1$;
  186. 1650  PRINT#3,BK$;:GOTO 1525
  187. 1654  R1=INP(LCR):K2=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 1684
  188. 1662  IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 1684
  189. 1664  IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0
  190. 1684  OUT LCR,R1:OUT MSB,K2:RETURN
  191. 1700  F$=HE2$:GOTO 1790
  192. 1720  IF BC<1 THEN A$="Sorry, "+FE$+TI1$:GOTO 2210
  193. 1730  F$=BUL$(0):EC=0:GOSUB 1790:IF EC<>53 THEN GOSUB 9710
  194. 1735  RETURN
  195. 1740  F$=HE1$:GOTO 1790
  196. 1760  F$=WB$:GOTO 1790
  197. 1780  F$=HE8$
  198. 1790  GOSUB 43030:GOSUB 6000:RETURN
  199. 1800  GOSUB 1400:A$="Comments are readable by Sysop only, Do you wish to leave a comment":GOSUB 1500:MQ=72:IF NOT YES THEN A$="No comment.":GOTO 2210
  200. 1840  T$="SYSOP":SUB$="COMMENT":SC=TBA:GOTO 2007
  201. 1900  IF LJ THEN RETURN
  202. 1910  GOSUB 50510:OUT MCR,INP(MCR) AND 254:GOSUB 50500:OUT MCR,INP(MCR) OR 1:RETURN
  203. 1940  CLOSE 2:OPEN "A",2,CG$:GOSUB 1400:A$="Thanks for the comments, "+FE$+" !":GOSUB 1400:GOSUB 482:PRINT#2,NAM$,D$,TIM$:FOR X=1 TO LI:PRINT#2,A$(X):NEXT:FOR X=1 TO 2:PRINT#2,CR$:NEXT:CLOSE 2:RETURN
  204. 2000  GOSUB 1400:IF LC=ME THEN A$="Too many active messages -- try tomorrow.":GOSUB 1400:GOTO 3650
  205. 2006  PAS$=TA$:SC=FD:IF NOT RE THEN T$=TA$
  206. 2007  IF SC THEN F$="COMMENT" ELSE F$="MESSAGE
  207. 2008  Z$=MES$:GOSUB 52000:IF VAL(AD$)<2000 THEN A$="Not enough room for "+F$+"!":GOSUB 1400:GOTO 3650
  208. 2010  LI=0:L=0:X=0:FOR I=1 TO 30:A$(I)=TA$:NEXT:IF SC THEN 2100
  209. 2015  A$="Message will be # "+STR$(LE+1):GOSUB 1400:IF RE THEN 2050
  210. 2020  A$="To (C/R  For All)":GOSUB 1500:IF LEN(B$(1))>30 THEN A$="30"+TM$:GOSUB 1400:GOTO 2020
  211. 2030  IF Q=0 THEN T$=TP$ ELSE Z$=B$(1):GOSUB 5000:T$=Z$
  212. 2035  A$="Subject":GOSUB 1500:IF LEN(B$(1))>25 THEN A$="25"+TM$:GOSUB 1400:GOTO 2035
  213. 2045  IF Q=0 THEN 20095 ELSE Z$=B$(1):GOSUB 5000:SUB$=Z$
  214. 2050  A$="Security <K,P,R,N,H,?>":IF XPR THEN 2060
  215. 2055  A$="Security < K)ill, P)assword, R)eceiver, N)one, H)elp >
  216. 2060  GOSUB 1500:IF Q=0 THEN 2050 ELSE Z$=LEFT$(B$(1),1):GOSUB 5000:ON INSTR("RKNPH?",Z$) GOTO 2075,2090,2100,2088,2070,2055:GOTO 2050
  217. 2070  F$=HE3$:GOSUB 1790:GOTO 2050
  218. 2075  IF T$=TP$ THEN A$="MESSAGE CANNOT BE PROTECTED":GOSUB 1400:GOTO 2050
  219. 2084  PAS$=TU$:GOTO 2100
  220. 2085  A$=P$:GOSUB 1500:IF Q=0 THEN 2085 ELSE IF LEN(B$(1))>L THEN A$=STR$(L)+" Chars. max.":GOSUB 1400:GOTO 2085 ELSE IF L=15 AND MID$(B$(1),1,1)="!" THEN A$=P$+" can't begin with '!'":GOSUB 1400:GOTO 2085 ELSE RETURN
  221. 2088  A$="Callers must KNOW PASSWORD TO READ message.  Is this what you want":GOSUB 1500: IF NO THEN 2070 ELSE L=14:A1$="!":GOTO 2092
  222. 2090  L=15:A1$="
  223. 2092  GOSUB 2085:Z$=B$(1):GOSUB 5000:PAS$=A1$+Z$
  224. 2100  GOSUB 1400:IF NOT XPR THEN A$="To enter message, type in text.":GOSUB 1400:A$="<C/R> to end (19 lines max.).":GOSUB 1400
  225. 2120  GOSUB 3200
  226. 2125  LI=LI+1:A$=RIGHT$(STR$(LI),2)+": "+A$(LI):CR=1:GOSUB 1400:GOSUB 3700:IF A$(LI)=TA$ THEN LI=LI-1:GOTO 2300
  227. 2140  J=LI:GOSUB 2200:IF X THEN 2300 ELSE 2125
  228. 2200  X=0:IF J<17 OR SH THEN RETURN ELSE IF J=17 THEN A$="Two lines left..." ELSE IF J=18 THEN A$="Last line" ELSE A$="Message full.":X=-1
  229. 2210  GOSUB 1400:RETURN
  230. 2220  GOSUB 1400:GOTO 20095
  231. 2300  GOSUB 1400:IF NOT XPR THEN GOSUB 50400
  232. 2315  GOSUB 1400:A$="Subfunction <A,C,D,E,I,L,M,S,?>":GOSUB 1500:IF Q=0 THEN 2315 ELSE Z$=B$(1):GOSUB 5000
  233. 2325  IF Q>1 AND Z$<>"M"THEN L=VAL(B$(Q)):GOSUB 3320
  234. 2330  ON INSTR("ACDEILMS?",Z$) GOTO 2400,2340,2500,2600,2800,3000,3100,3400,2345:GOTO 2300
  235. 2340  GOSUB 3200:GOTO 2140
  236. 2345  F$=HE4$:GOSUB 1790:GOTO 2315
  237. 2400  GOSUB 1400:A$="Abort message":GOSUB 1500:IF NOT YES THEN 2300
  238. 2430  GOSUB 1400:A$="Aborted":GOSUB 1400:GOTO 3650
  239. 2500  GOSUB 1400:IF Q=1 THEN A$="Delete ":CR=1:GOSUB 1400:GOSUB 3300
  240. 2520  A$="Line #"+STR$(L):GOSUB 1400:A$=A$(L):CR=2:GOSUB 1400:A$="Delete this line":GOSUB 1500:IF NOT YES THEN A$="Line #"+STR$(L)+" NOT Deleted.":GOSUB 1400:GOTO 2300
  241. 2550  LI=LI-1:FOR X=L TO LI:A$(X)=A$(X+1):NEXT:A$(LI+1)=TA$:A$="Line #"+STR$(L)+" Deleted.":GOSUB 1400:GOTO 2300
  242. 2600  GOSUB 1400:IF Q=1 THEN GOSUB 3300
  243. 2620  A$="Line #"+STR$(L)+" is:":GOSUB 1400:A$=A$(L):CR=2:GOSUB 1400:A$="Enter <Oldstring;Newstring> or C/R for no change.":GOSUB 1400:GOSUB 1400:B$(2)=TA$:GOSUB 1500:IF Q=0 THEN 2300
  244. 2660  X=INSTR(1,A$(L),B$(1)):IF X=0 THEN 2710
  245. 2670  LB1=LEN(B$(1)):LB2=LEN(B$(2)):IF LB1=LB2 THEN MID$(A$(L),X)=B$(2):GOTO 2620
  246. 2690  C$=MID$(A$(L),X+LB1):CC$=LEFT$(A$(L),X-1):A$(L)=CC$+B$(2)+C$:GOTO 2620
  247. 2710  A$="String <"+B$(1)+"> not found in line"+STR$(L)+".":GOSUB 1400:GOTO 2300
  248. 2800  IF LI=>19 AND NOT SH THEN A$="Message full.":GOSUB 1400:GOTO 2920
  249. 2820  GOSUB 1400:IF Q=1 THEN A$="Before ":CR=1:GOSUB 1400:GOSUB 3300
  250. 2830  W=LI:K=LI-L:FOR X=L TO LI:B$(X+1-L)=A$(X):A$(X)=TA$:NEXT:LI=L
  251. 2840  A$=RIGHT$(STR$(LI),2)+": ":CR=1:GOSUB 1400:GOSUB 3700:IF A$(LI)=TA$ THEN 2920
  252. 2870  LI=LI+1:J=LI+K-1:GOSUB 2200:IF X THEN 2920 ELSE 2840
  253. 2920  FOR X=1 TO K+1:A$(LI+X-1)=B$(X):NEXT:LI=W+LI-L:GOTO 2300
  254. 3000  STI=-1:GOSUB 1400:IF Q=1 THEN L=1:A$="To: "+T$+" Re: "+SUB$:GOSUB 1400:GOSUB 3200
  255. 3020  FOR X=L TO LI:IF RET THEN 2300 ELSE A$=RIGHT$(STR$(X),2)+": "+A$(X)
  256. 3030  GOSUB 1400:NEXT:GOTO 2300
  257. 3100  GOSUB 1400:IF Q<>1 THEN B$(1)=B$(Q):GOTO 3130
  258. 3115  A$="Right-Margin is"+STR$(MQ):GOSUB 1400:A$="Set to (8,16,24,32,40,48,56,64,72)":GOSUB 1500
  259. 3130  X=VAL(B$(1)):IF X>0 AND X<81 AND X MOD 8=0 THEN 3150
  260. 3140  A$="Invalid - Margin remains "+STR$(MQ)+".":GOSUB 1400:IF MS THEN RETURN ELSE 2300
  261. 3150  MQ=VAL(B$(1)):A$="Margin now"+STR$(MQ)+".":GOSUB 1400:IF MS THEN RETURN ELSE 2300
  262. 3200  GOSUB 1400:A$="    ["+STRING$(MQ-2,45)+"]":GOTO 2210
  263. 3300  A$="Line #":GOSUB 1500:L=VAL(B$(1))
  264. 3320  IF L=>1 AND L=<LI THEN RETURN
  265. 3330  IF Q=0 THEN RETURN 2300
  266. 3340  A$="No such line, "+FE$+".":GOSUB 1400:RETURN 2300
  267. 3400  IF SC THEN 1940
  268. 3410  GOSUB 1400:A$="Updating Message file.":CR=1:GOSUB 1400:X#=0:REC=0:N$=TA$:LE=LE+1:LC=LC+1:MT$=STR$(LE)+SPACE$(5-LEN(STR$(LE))):IF PAS$=TU$ THEN MID$(MT$,1,1)="*
  269. 3460  FI$=NAM$+SPACE$(31-LEN(NAM$)):T$=T$+SPACE$(31-LEN(T$)):MID$(T$,23,8)=TIME$:SUB$=SUB$+SPACE$(25-LEN(SUB$)):PAS$=PAS$+SPACE$(15-LEN(PAS$)):FOR J=1 TO LI:A$(J)=A$(J)+CHR$(227):REC=REC+LEN(A$(J)):NEXT
  270. 3510  IF REC MOD 128=0 THEN N$=STR$(REC\128+1) ELSE N$=STR$(REC\128+2)
  271. 3520  GOSUB 167:X#=LOF(1)/128:GET 1:MID$(R$,1,8)=STR$(LE):PUT 1,1
  272. 3530  GET 1,X#:M(LC,1)=X#+1:M(LC,2)=LE
  273. 3550  LSET R$=MT$+FI$+T$+D$+SUB$+PAS$+CHR$(225)+N$:PUT 1,M(LC,1):N$=TA$:FOR J=1 TO LI:A$=".":CR=1:GOSUB 1400:N$=N$+A$(J):IF LEN(N$)>127 THEN LSET R$=N$:PUT 1:N$=MID$(N$,129)
  274. 3630  NEXT:IF LEN(N$)>0 THEN LSET R$=N$:PUT 1
  275. 3640  GOSUB 1400
  276. 3650  IF RE THEN RETURN ELSE 20095
  277. 3700  RS$=A$(LI):COL=LEN(RS$):STI=0
  278. 3720  COL=COL+1
  279. 3730  IF LJ THEN X$=INPUT$(1):GOTO 3740
  280. 3732  THA!=FNTI!:WHILE EOF(3):MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
  281. 3733  GOSUB 42000:X$=INKEY$:FK$=X$:GOSUB 60000
  282. 3734  IF LEN(X$)=1 THEN 3740
  283. 3736  WEND:X$=INPUT$(1,3):IF X$=LF$THEN 3730
  284. 3738  IF X$=CHR$(127)THEN 3870
  285. 3740  IF X$=BK2$ OR X$=BA$ THEN 3870
  286. 3750  A$=X$:CR=1:GOSUB 1400:IF X$=CR$THEN 3850
  287. 3770  IF COL>MQ-3 AND X$=TB$ THEN GOSUB 1400:GOTO 3850
  288. 3780  RS$=RS$+X$:IF COL<MQ+1 THEN 3720
  289. 3800  Z=LEN(RS$):FOR I=1 TO LEN(RS$):IF MID$(RS$,Z,1)=TB$ THEN 3820
  290. 3810  Z=Z-1:NEXT:Z=LEN(RS$)-1
  291. 3820  COL=MQ+1-Z:IF PRT THEN PRINT STRING$(COL,29);STRING$(COL,0);
  292. 3830  IF NOT LJ THEN PRINT#3,STRING$(COL,8);STRING$(COL,32);
  293. 3840  A$(LI)=LEFT$(RS$,Z):A$(LI+1)=RIGHT$(RS$,COL):GOTO 2210
  294. 3850  IF NOT LJ AND LF THEN PRINT#3,LF$;
  295. 3860  A$(LI)=RS$:RETURN
  296. 3870  IF COL=1 THEN 3730 ELSE COL=COL-2:RS$=LEFT$(RS$,LEN(RS$)-1)
  297. 3880  IF PRT THEN PRINT BK1$;
  298. 3885  IF NOT LJ THEN PRINT#3,BK$;
  299. 3890  GOTO 3720
  300. 3900  KB=0:GOSUB 1400:IF Q<>1 THEN MM=VAL(B$(Q)):GOTO 3950
  301. 3930  A$="Msg # to Kill":GOSUB 1500:MM=VAL(B$(Q)):GOSUB 1400:IF MM=0 THEN RETURN
  302. 3950  FOR Q=1 TO LC:IF M(Q,2)=MM THEN 3970
  303. 3955  NEXT:GOSUB 3965:GOTO 4040
  304. 3965  A$="There is no message # "+STR$(MM)+".":GOTO 2210
  305. 3970  GET 1,M(Q,1):R=VAL(MID$(R$,118)):IF SH THEN 4030
  306. 3980  Z=15:Z$=MID$(R$,101,15):GOSUB 8100:IF LEN(Z$)=0 THEN 4030
  307. 3990  IF Z$="^READ^" THEN IF INSTR(R$,NAM$) THEN 4030 ELSE MES=-1:MR=0:GOSUB 680:GOTO 4040
  308. 4000  IF LEFT$(Z$,1)="!" THEN KEE$=MID$(Z$,2)+SPACE$(16-LEN(Z$)):MR=1:MES=-1:GOSUB 667:IF PF THEN GOSUB 50510:GOTO 4040
  309. 4030  LSET R$=LEFT$(R$,115)+CHR$(226)+MID$(R$,117):PUT 1,LOC(1):A$="Msg # "+STR$(MM)+" Killed.":GOSUB 1400
  310. 4040  IF KB THEN RETURN ELSE 20095
  311. 4100  GOSUB 1400:LF=NOT LF:A$="Line Feeds ":IF LF THEN A$=A$+"On" ELSE A$=A$+"Off
  312. 4130  GOTO 4300
  313. 4200  GOSUB 1400:BA=NOT BA:A$="Prompting Bell ":IF BA THEN A$=A$+"On" ELSE A$=A$+"Off
  314. 4230  GOTO 4300
  315. 4240  GOSUB 1400:XPR=NOT XPR:IF XPR THEN A$="Expert Mode" ELSE A$="Novice Mode
  316. 4300  GOSUB 1400:GOSUB 50500:RETURN
  317. 4320  QU=-1:RT=0:SU=0:GOTO 4350
  318. 4330  QU=0:RT=-1:SU=0:GOTO 4350
  319. 4340  QU=0:RT=0:SU=-1<UNK! {0009}>
  320. 4350  QAH=-RT-QU-SU*5:IF Q>2 AND VAL(B$(Q))=0 THEN Z$=B$(Q):Q=Q-1 ELSE Z$=TA$
  321. 4360  GOSUB 5000:SC$=Z$:L=1:LI=Q:MU=0
  322. 4370  L=L+1:IF L<=LI THEN MM=VAL(B$(L)):GOTO 4415
  323. 4380  NH=0:MU=0:A$="Msg # ("+STR$(FC)+" to"+STR$(M(LC,2))+", *, <H>elp)":IF XPR THEN 4400
  324. 4390  IF RT THEN A$=A$+" to Retrieve (C/R to end)" ELSE A$="Starting at "+A$
  325. 4400  GOSUB 1500:IF Q=0 THEN 20095 ELSE IF INSTR("Hh",LEFT$(B$(1),1))THEN F$=HE7$:GOSUB 1790:RETURN ELSE L=0:LI=Q:GOTO 4370
  326. 4415  FOW=0:REV=0:IF B$(L)="*"THEN MM=LO+1:FOW=-1:GOTO 4430
  327. 4416  IF INSTR("Mm",B$(L)) THEN MU=-1:GOTO 4370 ELSE IF MM=0 THEN 20095 ELSE GOSUB 1400
  328. 4430  IF RIGHT$(B$(L),1)="+"THEN FOW=-1 ELSE IF RIGHT$(B$(L),1)="-"THEN REV=-1:GOTO 4490
  329. 4450  FOR R=1 TO LC:IF RT AND M(R,2)=MM THEN 4520
  330. 4470  IF((RT AND FOW)OR QU OR SU)AND M(R,2)=>MM THEN 4520
  331. 4480  NEXT:GOTO 4515
  332. 4490  FOR R=LC TO 1 STEP-1:IF M(R,2)<=MM THEN 4540
  333. 4510  NEXT
  334. 4515  GOSUB 3965:GOTO 4370
  335. 4520  QQQ=R:IF RT AND NOT FOW THEN 4560
  336. 4530  QQ=R:QQQ=LC:QA=1:GOTO 4550
  337. 4540  QQ=R:QQQ=1:QA=-1
  338. 4550  FOR R=QQ TO QQQ STEP QA
  339. 4560  GET 1,M(R,1):PF=0:UH=0:Z$=MID$(R$,101,15):IF INSTR(R$,NAM$)>0 THEN UH=-1
  340. 4561  IF NOT SH THEN IF INSTR(R$,TU$)>0 AND NOT UH THEN PF=-1:IF FOW OR REV THEN 4635
  341. 4562  MM=VAL(MID$(R$,2,4)):IF MU AND NOT UH THEN 4625
  342. 4580  IF INSTR(R$,SC$)=0 THEN 4635
  343. 4581  IF MID$(R$,116,1)=CHR$(226) THEN 4625
  344. 4582  PG=0:IF MID$(Z$,1,1)="!" THEN IF NOT SH THEN PG=-1:KEE$=MID$(Z$,2)+" ":MR=0:GOSUB 665
  345. 4584  IF PF AND (QU OR (SU AND NOT PG)) THEN 4635
  346. 4585  IF PF THEN IF PG THEN SJ$="<PASSWORD>" ELSE SJ$="<PROTECTED>" ELSE SJ$=MID$(R$,76,25)
  347. 4590  IF QU THEN Z$=LEFT$(R$,5)+TB$+SJ$:Z=31:GOSUB 8100:A$=Z$:GOSUB 1400:GOTO 4630
  348. 4600  GOSUB 8000:IF SU OR RET THEN 4630 ELSE IF M(R,2)>LO THEN LO=M(R,2)
  349. 4610  IF NOT PF THEN 4613 ELSE IF PG THEN MR=2:GOSUB 667
  350. 4611  IF PF THEN GOSUB 4670:GOSUB 1400:GOTO 4625
  351. 4613  GOSUB 9000:GOSUB 1400:IF Q AND PL<>0 THEN 62500
  352. 4625  IF NOT FOW AND NOT REV THEN 4370
  353. 4630  IF PL=0 THEN 4631 ELSE Q=Q+QAH:IF Q<PL THEN 4631 ELSE GOSUB 5600:IF NO THEN Q=0:GOTO 4650 ELSE Q=QAH
  354. 4631  IF RET THEN 20095
  355. 4635  NEXT:IF RT THEN 4370
  356. 4650  GOSUB 1400:A$="End of Msgs.":GOTO 2220
  357. 4670  GOSUB 1400:A$="Sorry, "+FE$+", msg # "+LEFT$(R$,5)+" is protected.":GOTO 2210
  358. 4700  IF NOT AVA GOTO 4708
  359. 4705  GOSUB 1400:A$="Chat... Remote Conversation Utility.":CR=2:GOSUB 1400:TIA=VAL(MID$(TIME$,1,2))*100+VAL(MID$(TIME$,4,2)):IF(TIA>AA AND TIA<AB)OR AC THEN 4710
  360. 4707  GOTO 4750
  361. 4708  A$=NA$+TG$+STR$(AA)+" and"+STR$(AB)+",":GOSUB 1400:A$="but is temporarily away, "+FE$:GOSUB 1400:GOTO 4755
  362. 4710  A$="Return is to main menu in":GOSUB 1400:A$="30 sec. if SYSOP unavailable.":CR=2:GOSUB 1400:K=0:A$="Paging SYSOP now...":CR=1:GOSUB 1400:IA!=FNTI!+30
  363. 4730  IB!=FNTI!+1
  364. 4731  IF FNTI!<IB!GOTO 4731
  365. 4735  K=K+1:IF INKEY$=ESC$THEN 4765
  366. 4740  A$=". ":IF K MOD 2 THEN A$=A$+BA$
  367. 4744  IF LH THEN LPRINT BA$;
  368. 4745  CR=1:GOSUB 1400:IF FNTI!<IA!GOTO 4730 ELSE GOSUB 1400
  369. 4750  A$="Sorry "+FE$+", "+NA$+TG$+STR$(AA)+" and "+STR$(AB)+",":GOSUB 1400
  370. 4755  A$="Please leave a message or comment.":Z$=SPACE$(5)+"Operator paged at "+LEFT$(TIME$,5):GOSUB 5538:GOTO 2210
  371. 4765  GOSUB 1400:A$="SYSOP available! Go ahead...":CR=2:GOSUB 1400
  372. 4770  CM=TBA:GOSUB 49000
  373. 4775  WHILE EOF(3):A$=INKEY$:FK$=A$:GOSUB 60000
  374. 4776  IF A$=BK2$ OR A$=BA$ OR A$=CHR$(127)THEN 4805 ELSE IF A$=ESC$THEN CM=FD:CLS:GOTO 20095
  375. 4785  IF A$=CR$AND LF THEN PRINT#3,LF$;
  376. 4790  IF A$<>TA$ THEN 4800
  377. 4795  WEND
  378. 4797  A$=INPUT$(1,3):IF A$=BK2$ OR A$=BA$ THEN 4805 ELSE IF A$=CR$AND LF THEN PRINT#3,LF$;
  379. 4800  CR=1:GOSUB 1400:GOTO 4775
  380. 4805  IF POS(0)>1 THEN PRINT BK1$;:PRINT#3,BK$;
  381. 4810  GOTO 4775
  382. 4900  GOSUB 1400:A$="RBBS-PC Version "+VA$:GOSUB 1400:A$="You are caller #  ->"+STR$(CJ):GOSUB 1400:A$="# of Active msgs  ->"+STR$(LC):GOSUB 1400:IF LO>0 THEN A$="Last msg you read ->"+STR$(LO):GOSUB 1400
  383. 4950  A$="Next msg # will be->"+STR$(LE+1):GOTO 2210
  384. 5000  FOR Z=1 TO LEN(Z$):MID$(Z$,Z,1)=CHR$(ASC(MID$(Z$,Z,1))+32*(ASC(MID$(Z$,Z,1))>96)):NEXT:RETURN
  385. 5100  Z1$=TA$:FOR Z=1 TO LEN(Z$):IF ASC(MID$(Z$,Z,1))<65 OR ASC(MID$(Z$,Z,1))>90 THEN 5105 ELSE Z1$=Z1$+MID$(Z$,Z,1)
  386. 5105  NEXT:Z$=Z1$:RETURN
  387. 5110  A$="Enter a new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE IF LEN(B$(1))>15 THEN 5110 ELSE Z$=B$(1):GOSUB 5000
  388. 5120  A$="Reenter new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE SWAP Z$,B$(1):GOSUB 5000:IF Z$<>B$(1)THEN A$=P$+"s don't match.":GOTO 2210
  389. 5125  IF MP AND NCH>MP AND NOT SH THEN A$="No changes permitted" ELSE Z=1:GOSUB 5140:IF NOT FG THEN 5130 ELSE A$="Temporary change":PW$=TPW$:TV!=TJA*60:UG=TFA:GOSUB 41070:GOSUB 41050:IF UG<SE THEN SH=0 ELSE SH=-1
  390. 5126  Z$=SPACE$(5)+"Temp password "+B$(1)+" used":GOSUB 5538:GOTO 2210
  391. 5130  GOSUB 9400:GET 2,UIX#:LSET PW$=B$(1):PUT 2,UIX#:CLOSE 2:GOSUB 1400:A$=P$+" change complete. ":STI=0:GOSUB 1400:IF MP THEN NCH=NCH+1
  392. 5131  Z$=SPACE$(5)+"Password changed to "+B$(1):GOSUB 5538:RETURN
  393. 5140  FG=0:CLOSE 2:OPEN PD$ FOR INPUT AS 2:Z$=Z$+SPACE$(15-LEN(Z$))
  394. 5150  IF EOF(2) THEN 5160 ELSE INPUT #2,TPW$,TFA,TJA:IF LEN(TPW$)>15 THEN 5150 ELSE TPW$=TPW$+SPACE$(15-LEN(TPW$)):IF Z$<>TPW$ THEN 5150 ELSE IF Z THEN FG=-1 ELSE IF UG=TFA THEN FG=-1 ELSE 5150
  395. 5160  RETURN
  396. 5200  IF Q>1 THEN 5230
  397. 5220  A$="Page length is"+STR$(PL)+". Enter new length (0=continuous)":GOSUB 1500:IF Q=0 THEN 1200
  398. 5230  A=VAL(B$(Q)):IF A<0 OR A>255 THEN 5220 ELSE PL=A:GOTO 1200
  399. 5500  IF BPS=-3 THEN A$="Sorry, 1200 baud connect cannot change speed.":GOTO 2210
  400. 5507  A$=T1$:GOSUB 1500:IF NOT YES THEN RETURN
  401. 5510  A$=T1$+" and enter <c/r> until I respond...":GOSUB 1400:FOR I=1 TO 3:GOSUB 50510:NEXT:C=0:SWAP Q,NE:GOSUB 1654:SWAP Q,NE
  402. 5530  C=C+1:GOSUB 42000:IF C=20 THEN 10595 ELSE GOSUB 50500
  403. 5535  IF NOT EOF(3)THEN IF ASC(INPUT$(1,3))=13 THEN 5540
  404. 5537  GOTO 5530
  405. 5538  GOSUB 56000:LSET CL$=Z$:CDX=CDX+1:PUT 2,CDX:IF LH THEN LPRINT Z$
  406. 5539  RETURN
  407. 5540  Z$=T2$+T1$+" completed.":GOSUB 5538:A$=Z$:GOSUB 1400:BPS=-2:RETURN
  408. 5600  GOSUB 41000:IF NH THEN RETURN ELSE A$="More (Y),N,NS":GOSUB 1500:RETURN
  409. 6000  IF STI THEN GOSUB 1400:A$=TJ$:CR=2:GOSUB 1400
  410. 6020  CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 6040
  411. 6030  Q=-1
  412. 6040  IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 6060
  413. 6045  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 6060 ELSE Q=0
  414. 6050  LINE INPUT #2,A$:A$=A$+NUL$:GOSUB 1400:IF NOT RET THEN 6040
  415. 6060  Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
  416. 6070  RETURN
  417. 6080  A$="Please tell the SYSOP file <"+F$+"> is missing!":GOTO 2210
  418. 7000  A$="Scanning "+MID$(F$,3):GOSUB 1400:NJ=-1:CLOSE 2:OPEN "I",2,F$:Q=0
  419. 7040  IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 7200
  420. 7045  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 7200 ELSE Q=0
  421. 7050  LINE INPUT #2,A$:A$=A$+NUL$:IF LEN(A$)<2 THEN 7100
  422. 7057  IF INSTR(A$,"--") THEN 7100
  423. 7060  A=INSTR(9,MID$(A$,1,32),"/"):IF A>0 THEN 7070
  424. 7065  A=INSTR(9,MID$(A$,1,32),"-"):IF A=0 THEN 7100
  425. 7070  A=A-2:IF A>0 THEN PAD$=FNDC$(MID$(A$,A,8)) ELSE Q=Q-1:GOTO 7040
  426. 7075  IF MID$(PAD$,3,1)=TB$ THEN MID$(PAD$,3,1)="0
  427. 7085  IF MID$(PAD$,5,1)=TB$ THEN MID$(PAD$,5,1)="0
  428. 7089  IF PAD$=>LM$ AND NJ THEN NJ=0:CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 7040
  429. 7090  IF PAD$=>LM$ THEN 7100 ELSE Q=Q-1:GOTO 7040
  430. 7100  IF NJ THEN 7040
  431. 7101  GOSUB 1400:IF NOT RET THEN 7040 ELSE 7200
  432. 7200  A$=TA$:Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
  433. 7210  RETURN
  434. 8000  GOSUB 1400:IF RET THEN RETURN
  435. 8020  IF MID$(R$,37,3)=TP$ THEN T$=TP$:GOTO 8040
  436. 8030  Z=22:Z$=MID$(R$,37,Z):GOSUB 8100:T$=Z$
  437. 8040  Z=25:Z$=MID$(R$,76,Z):GOSUB 8100:SUB$=Z$:IF PF THEN SUB$=SJ$
  438. 8050  Z=31:Z$=MID$(R$,6,Z):GOSUB 8100:FI$=Z$:A$="Msg # "+LEFT$(R$,5)+" Dated "+MID$(R$,68,8)+TB$+MID$(R$,59,8):GOSUB 1400:IF NOT RET THEN A$="From: "+FI$
  439. 8070  GOSUB 1400:IF NOT RET THEN A$="  To: "+T$:GOSUB 1400:A$="  Re: "+SUB$:GOSUB 1400
  440. 8080  RETURN
  441. 8100  Z=LEN(Z$):FOR I=1 TO LEN(Z$):IF MID$(Z$,Z,1)<>TB$ THEN 8110
  442. 8105  Z=Z-1:NEXT
  443. 8110  Z$=MID$(Z$,1,Z):RETURN
  444. 9000  GOSUB 1400:Q=4:FOR X=2 TO VAL(MID$(R$,118)):CR=1:GOSUB 1400:EOL=0:J=1:GET 1
  445. 9050  B=INSTR(J,R$,CHR$(227)):IF RET THEN RETURN
  446. 9060  C=B-J:IF C<1 THEN C=128:EOL=-1
  447. 9070  A$=MID$(R$,J,C):IF EOL THEN 9090
  448. 9075  GOSUB 1400:J=B+1:IF PL THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:Q=0:IF NO THEN RETURN
  449. 9085  GOTO 9050
  450. 9090  NEXT:A$=TA$:RETURN
  451. 9100  GOSUB 1400:H=VAL(LEFT$(TI$,2)):M=VAL(MID$(TI$,4,2)):S=VAL(MID$(TI$,7,2)):HH=VAL(LEFT$(TIME$,2)):MM=VAL(MID$(TIME$,4,2)):SS=VAL(MID$(TIME$,7,2)):IF S=<SS THEN SSS=SS-S ELSE SSS=60-(S-SS):M=M+1
  452. 9150  IF M=<MM THEN MMM=MM-M ELSE MMM=60-(M-MM):H=H+1
  453. 9160  IF H=<HH THEN HHH=HH-H ELSE HHH=24-(H-HH)
  454. 9170  GOSUB 482:A$="It is now "+TIM$+".":GOSUB 1400:A$="You have been on for":CR=1:GOSUB 1400:IF HHH>0 THEN A$=STR$(HHH)+" Hours":CR=1:GOSUB 1400
  455. 9200  A$=STR$(MMM)+" Min. and"+STR$(SSS)+" Sec.":GOTO 2210
  456. 9300  NK=NOT NK:A$="<Nulls> ":IF NK THEN NUL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0):A$=A$+"on" ELSE NUL$="":A$=A$+"off"
  457. 9320  GOTO 2210
  458. 9400  CLOSE 2:OPEN "R",2,UF$,128:FIELD 2,31 AS N$,15 AS PW$,2 AS SL$,14 AS OP$,24 AS CS$,19 AS MA$,14 AS TD$,3 AS LND$,2 AS UDL$,2 AS UUL$,2 AS ET$:RETURN
  459. 9500  AVA=NOT AVA:IF PRT THEN GOSUB 49000
  460. 9530  GET 1,1:MID$(R$,9,2)=STR$(AVA):PUT 1,1:RETURN
  461. 9710  NH=0:GOSUB 1400:A$="Bulletin # <1 through"+STR$(BC)+", L)ist or C/R to end>":GOSUB 1500:IF Q=0 THEN RETURN
  462. 9711  Z$=B$(1):GOSUB 5000:FF=INSTR("L123456",Z$):IF FF=0 THEN 9710
  463. 9745  F$=BUL$(FF-1):GOSUB 1790:GOTO 9710
  464. 10070  F$=CG$:GOSUB 6000:RETURN
  465. 10090  A$=CR$+"List - <U>sers, <R>ecent callers, C/R to return":CR=2:GOSUB 1500:IF Q=0 THEN RETURN ELSE Z$=B$(1):GOSUB 5000:ON INSTR("UR",Z$)+1 GOTO 10090,10096,10100
  466. 10096  GOSUB 9400:STI=-1:Q=0:FOR I=1 TO (INT(LOF(2)/128)):GET 2,I:A$=LEFT$(N$,20)+CS$+MA$+TD$:GOSUB 1400:IF RET THEN RETURN
  467. 10098  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
  468. 10099  NEXT:STI=0:RETURN
  469. 10100  F$=CF$:GOSUB 57000:RETURN
  470. 10110  A$="Pack MESSAGES file":GOSUB 1500:IF NO THEN 20095
  471. 10112  OK=0:NAME MN$ AS MN$ 
  472. 10113  IF NOT OK THEN 10120
  473. 10115  KILL MN$
  474. 10120  CLOSE 1,2:NAME MES$ AS MN$:Q=0:OPEN "R",1,MN$:GOSUB 170:OPEN "R",2,MES$:FIELD 2,128 AS RR$:GET 1:GOTO 10240
  475. 10150  GET 1
  476. 10160  IF INSTR(R$,CHR$(225)) THEN 10220
  477. 10170  IF INSTR(R$,CHR$(227)) THEN 10240
  478. 10180  IF INSTR(R$,CHR$(226)) THEN 10250
  479. 10185  IF NOT EOF(1)THEN 10150
  480. 10190  GOSUB 1400:A$="# of Msgs Purged :"+STR$(Q):GOSUB 1400:A$="# of Bytes Purged:"+STR$(CSNG(LOC(1)*128)-CSNG(LOC(2)*128)):GOSUB 1400
  481. 10210  A$="Re-Loading Msg File...":GOSUB 1400:GOSUB 135:GOTO 20095
  482. 10220  A$="Msg #"+LEFT$(R$,5)+TF$:GOSUB 1400
  483. 10240  LSET RR$=R$:PUT 2:GOTO 10150
  484. 10250  Q=Q+1:A$="Msg #"+LEFT$(R$,5)+"          purged...":GOSUB 1400:GET 1,LOC(1)+VAL(MID$(R$,118)):GOTO 10160
  485. 10280  A$="Renumber starting with OLD msg #":GOSUB 1500:MM=VAL(B$(1)):IF Q=0 OR MM<1 THEN 20095
  486. 10300  A$="Start with NEW #":GOSUB 1500:Y=VAL(B$(1)):IF Q=0 THEN 10280
  487. 10310  FOR Q=1 TO LC:IF M(Q,2)=MM THEN R=M(Q,1):GOTO 10340
  488. 10330  NEXT:A$="No Msg #"+STR$(MM):GOTO 2220
  489. 10340  GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN GET 1,1:Y=LC:LSET R$=STR$(Y+1)+SPACE$(8-LEN(STR$(Y)))+MID$(R$,9):PUT 1,1:GOTO 10210
  490. 10360  LSET R$=STR$(Y)+SPACE$(5-LEN(STR$(Y)))+MID$(R$,6):IF MID$(R$,101,6)=TU$ THEN MID$(R$,1,1)="*"
  491. 10370  PUT 1,LOC(1):Y=Y+1:R=R+RR:GOTO 10340
  492. 10390  A$="Msg # to Recover":GOSUB 1500:MM=VAL(B$(1)):IF MM<1 THEN 1450
  493. 10410  R=2:GOSUB 1400
  494. 10420  GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN A$="No Msg #"+STR$(MM):GOTO 2210
  495. 10440  IF VAL(MID$(R$,2,4))<>MM THEN R=R+RR:GOTO 10420
  496. 10450  IF INSTR(R$,CHR$(226))<>0 THEN LSET R$=LEFT$(R$,115)+CHR$(225)+MID$(R$,117):PUT 1,LOC(1):A$="Msg #"+STR$(MM)+" is restored.":GOSUB 1400:GOTO 10210
  497. 10480  A$="Msg #"+STR$(MM)+" is not Dead.":GOTO 2210
  498. 10490  R=2
  499. 10510  GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN RETURN
  500. 10520  A$=R$:GOSUB 1400:R=R+RR:GOTO 10510
  501. 10530  A$="Delete all comments":GOSUB 1500:IF YES THEN CLOSE 2:OPEN "O",2,CG$:CLOSE 2
  502. 10550  GOTO 20095
  503. 10555  IF KG THEN RETURN
  504. 10560  GOSUB 9100:IF HHH>0 THEN CLOSE 2:OPEN "A",2,LB$:WRITE#2,NAM$,D$,HHH,MMM:CLOSE 2
  505. 10590  A$="Thanks for calling, "+FE$+"!":GOSUB 1400
  506. 10595  IF CINT(UIX#)<1 THEN CLS:GOTO 13540
  507. 10600  SH=0:GOSUB 9400:GET 2,UIX#:LSET OP$=MKI$(TGA)+MKI$(LO)+MKI$(LF)+MKI$(MQ)+MKI$(BA)+MKI$(XPR)+CHR$(PL)+STRING$(1,0):IF LD THEN LSET LND$=FNCD$(D$)
  508. 10605  LSET UDL$=MKI$(DLD):LSET UUL$=MKI$(ULD):GOSUB 41010:LSET ET$=MKI$(ET+(TV!/60)-TR!):PUT 2,UIX#:GOTO 13540
  509. 10620  Z$=SPACE$(5)+LG$(I):GOSUB 5538:Z$=NAM$+" on at "+D$+", "+TIM$+"***** LOGON DENIED *****"+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$)):IF LH THEN LPRINT Z$
  510. 10698  GOSUB 1400:A$="You are denied access.":CR=2:GOSUB 1400:GOTO 13540
  511. 10700  GOSUB 1400:A$="Enter filespec(s) as d:filespec.ext ":GOSUB 1500:GOSUB 5000:IF B$(1)=TA$ THEN 1200 ELSE Z$=B$(1)
  512. 10715  A$="Reading directory...":GOSUB 1400:G=0
  513. 10720  CLS:FILES B$(J):LP=CSRLIN:IF CE THEN W=13:P=1 ELSE W=18:P=2 
  514. 10725  LOCATE P,1,1:FOR I=P TO LP:FOR B=1 TO 66 STEP W:G=G+1:B$(G)=TA$:FOR JJ=0 TO 11:H=SCREEN(I,(B+JJ)):B$(G)=B$(G)+CHR$(H):NEXT:IF INSTR(B$(G),".")>0 THEN 10840
  515. 10733  IF LN AND OC$="YES" AND B$(G) = DIR$+SPACE$(12-LEN(DIR$)) THEN G=G-1:GOTO 10840
  516. 10737  IF LN AND OD$="YES" AND B$(G) = UB$+SPACE$(12-LEN(UB$)) THEN G=G-1:GOTO 10840
  517. 10740  IF LEFT$(B$(G),1)=TB$ THEN G=G-1:GOTO 10845
  518. 10840  NEXT:NEXT
  519. 10845  IF LN THEN RETURN
  520. 10850  CLS:GOSUB 1400:A$="Sorting filenames...":GOSUB 1400:FOR X=1 TO G-1:FOR Y=X+1 TO G:IF B$(Y)<B$(X)THEN SWAP B$(X),B$(Y)
  521. 10880  NEXT:A$=".":CR=1:GOSUB 1400:NEXT:GOSUB 1400:A$="Filespecs":GOSUB 1400:FOR I=1 TO G:FOR MMM=1 TO LEN(B$(I)):L$=MID$(B$(I),MMM,1):IF ASC(L$)<>32 THEN W$=W$+L$
  522. 10920  NEXT:B$(I)=W$:A$=B$(I):GOSUB 1400:W$=TA$:NEXT:FOR I=1 TO 128:B$(I)=TA$:NEXT:GOTO 1200
  523. 10925  MS=-1:GOSUB 3100:MS=0:RETURN
  524. 10930  IF DA<2 THEN A$="Unsupported by current level of DOS.":GOTO 1200
  525. 10932  IF LJ THEN A$="Only for remote SYSOP's":GOTO 1200
  526. 10934  CLOSE 2:OPEN "O",2,CH$:PRINT#2,"ECHO OFF":PRINT#2,"CTTY "+CP$:PRINT#2,"ECHO RBBS-PC "+VA$:PRINT#2,"ECHO SYSOP in Remote Console Mode at "+TIME$+TH$+DATE$:PRINT#2,"COMMAND ":PRINT#2,"CTTY CON":PRINT#2,RC$:GOSUB 56000
  527. 10950  GOSUB 480:LSET CL$="     Exited to DOS 2.0 at "+TIM$:IF LH THEN LPRINT CL$
  528. 10960  GOTO 10992
  529. 10970  IF NOT BE THEN A$="Windows require N,8,1 for proper operation.":GOTO 2220
  530. 10972  IF NOT WA THEN A$="All RBBS-PC windows are closed.":GOSUB 1400:GOTO 1200
  531. 10974  F$=MJ$:GOSUB 43030:GOSUB 45000:A$="Which window would you like opened? (C/R to end)":GOSUB 1500:Z$=B$(1):GOSUB 5000:IF B$(1)=""THEN 1200
  532. 10976  CLOSE 2:OPEN "I",2,F$
  533. 10978  IF EOF(2)THEN A$="There is no "+Z$+" window!.":GOSUB 1400:GOTO 1200
  534. 10980  IF INP(MSR)<128 AND NOT LJ THEN 10595
  535. 10982  LINE INPUT#2,A$:IF LEN(A$)<LEN(Z$)GOTO 10978
  536. 10984  IF INSTR(A$,Z$)THEN 10985 ELSE 10978
  537. 10985  Z$=Z$+".BAT
  538. 10986  NAME Z$ AS Z$
  539. 10987  CLOSE 2:OPEN "O",2,CH$:PRINT#2,Z$:PRINT#2,RC$:CLOSE 2:A$="RBBS-PC "+Z$+" window opened at "+TIME$+" on "+DATE$:GOSUB 1400:WI=-1:GOSUB 56000:LSET CL$="     "+LEFT$(Z$,LEN(Z$)-4)+" window opened!":IF LH THEN LPRINT CL$
  540. 10992  CLOSE 3:OUT MCR,INP(MCR)OR 1:IF WI THEN IF MC THEN DEF SEG=MC:GOSUB 60400:POKE(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC),ASC(RIGHT$(CP$,1))-48:AX=&H700+MTERM:GOSUB 60510:GOSUB 60430
  541. 10996  CDX=CDX+1:PUT 2,CDX:GOSUB 43050:SYSTEM
  542. 11000  A$="A)dd, L)ist, P)rint, or M)odify users (C/R to quit)":GOSUB 1500:IF Q=0 THEN 20095 ELSE QQ=0:Z$=LEFT$(B$(1),1):GOSUB 5000:IF Z$="A" THEN 12300 ELSE IF Z$="M"THEN STI=0 ELSE IF Z$="P"THEN QQ=-1
  543. 11005  GOSUB 9400:Z=1
  544. 11010  XY#=LOF(2)/128:FOR J=Z TO XY#:GET 2,J
  545. 11015  IF ASC(N$)=0 THEN 11300 ELSE OF=CVI(SL$):A$=STR$(LOC(2))+":"+N$+" SECURITY "+STR$(OF)+TB$:IF OF<MO THEN A$=A$+" <Locked out>":GOTO 11100
  546. 11020  A$=A$+"Pw="+PW$+" Times on="+STR$(CVI(MID$(OP$,1,2)))
  547. 11025  IF QQ THEN LPRINT A$
  548. 11027  GOSUB 1400:RH=RET:IF OF>=SE THEN A$="  (SYSOP)   " ELSE A$="            "
  549. 11030  A$=A$+TD$+TB$+CS$+MA$
  550. 11100  IF QQ THEN LPRINT A$
  551. 11101  GOSUB 1400:RH=RET:A$="  DOWNLOADS="+STR$(CVI(UDL$)):A$=A$+SPACE$(30-LEN(A$))+"UPLOADS="+STR$(CVI(UUL$)):A$=A$+SPACE$(60-LEN(A$))+"TIME USED="+STR$(CVI(ET$))+" Min.":IF QQ THEN LPRINT A$
  552. 11105  GOSUB 1400:IF STI THEN 11300
  553. 11110  A$="D)elete, F)ind, M)enu, N)ew pswrd, P)rint, Q)uit, S)ecurity, #)user":GOSUB 1500:IF Q=0 THEN 11310
  554. 11115  Z$=LEFT$(B$(1),1):GOSUB 5000:X=INSTR("DNPQFSM",Z$):ON X GOTO 11130,11160,11220,11320,11340,11390,11330
  555. 11125  Z=VAL(B$):XY#=LOF(2)/128:IF Z<1 OR Z>XY#THEN 11310 ELSE 11010
  556. 11130  LSET N$=STRING$(31,0):GOTO 11290
  557. 11160  GOSUB 12800:GOTO 11290
  558. 11220  QQ=NOT QQ:GOTO 11015
  559. 11290  PUT 2,LOC(2):GOTO 11015
  560. 11300  IF RH THEN 11330
  561. 11310  NEXT
  562. 11320  CLOSE 2:GOTO 20095
  563. 11330  CLOSE 2:GOTO 11000
  564. 11340  GOSUB 1400:A$="Enter full name to find":GOSUB 1500:Z$=B$(1):GOSUB 5000:TEA$=Z$:GOSUB 12600:IF FG THEN 11015
  565. 11380  A$=TEA$+" not found.":CR=2:GOSUB 1400:GOTO 11015
  566. 11390  GOSUB 11395:LSET SL$=MKI$(OF):GOTO 11290
  567. 11395  A$="Enter security level":GOSUB 1500:Z$=B$(1):GOSUB 5000:OF=VAL(Z$):RETURN
  568. 12000  A$="Pack USERS file":GOSUB 1500:IF NO THEN 20095
  569. 12005  OK=0:UI$=UF$+".BAK":NOW=VAL(LEFT$(DATE$,2)):NAME UI$ AS UI$
  570. 12010  IF NOT OK THEN 12030
  571. 12020  KILL UI$
  572. 12030  NAME UF$ AS UI$:Q=0:CLOSE 1:OPEN "R",1,UI$,128:FIELD 1,31 AS O.N$,15 AS OG$,2 AS OH$,14 AS OI$,24 AS OJ$,19 AS OL$,14 AS OM$,3 AS OO$,2 AS OQ$,2 AS OS$,2 AS OT$:GOSUB 9400:A!=LOF(1)/128:FOR J=1 TO A!:GET 1,J:IF ASC(O.N$)=0 THEN 12220
  573. 12080  OF=CVI(OH$):OU=VAL(LEFT$(OM$,2)):LQ=NOW-OU:IF LQ<0 THEN LQ=LQ+12
  574. 12085  IF OF<=MO THEN 12200
  575. 12090  IF LQ>LA THEN 12220
  576. 12200  A$=STR$(LOC(1))+": "+O.N$+TF$:GOSUB 1400:LSET N$=O.N$:LSET PW$=OG$:LSET SL$=OH$:LSET OP$=OI$:LSET CS$=OJ$:LSET MA$=OL$:LSET TD$=OM$:LSET LND$=OO$:LSET UDL$=OQ$:LSET UUL$=OS$:LSET ET$=OT$
  577. 12210  PUT 2:GOTO 12230
  578. 12220  Q=Q+1:A$=STR$(LOC(1))+": "+O.N$+"          purged...":GOSUB 1400
  579. 12230  NEXT:GOSUB 1400:A$="# users purged:"+STR$(Q):GOSUB 1400:A$="Reloading files...":GOSUB 1400:CLOSE 1,2:GOSUB 135:GOSUB 9400:GOTO 20095
  580. 12300  A1$=TA$:TDA=0:T6$=FE$:T7$=LK$:T8$=NAM$:GOSUB 12500:TEA$=NAM$:GOSUB 12600:GOSUB 12630:IF FG THEN PRINT "User already exists...":GOTO 12320
  581. 12310  GOSUB 12800:GOSUB 11395:TFA=OF:GOSUB 12900:LSET TD$=D$+TB$+TI$:GOSUB 12950:LSET CS$=Z$:LSET ET$=MKI$(0)
  582. 12320  PUT 2,UIX#:UIX#=0:FE$=T6$:LK$=T7$:NAM$=T8$:GOTO 11000
  583. 12500  IF TDA>5 THEN TEX=-1:RETURN
  584. 12510  TDA=TDA+1:GOSUB 1400:A$=A1$+"FIRST Name":GOSUB 1500:IF Q=0 THEN 12500 ELSE Z$=B$(1):GOSUB 5000:GOSUB 5100:FE$=FNSS$(Z$):IF Q=1 THEN 12530
  585. 12520  Z$=B$(2):GOTO 12540
  586. 12530  A$=A1$+"LAST Name":GOSUB 1500:Z$=B$(1)
  587. 12540  GOSUB 5000:GOSUB 5100:LK$=FNSS$(Z$):IF LEN(FE$)<2 OR LEN(LK$)<2 OR (LEN(FE$)+LEN(LK$))>30 THEN 12500
  588. 12550  NAM$=MID$(FE$+TB$+LK$,1,31):RETURN
  589. 12600  A$="Checking User File...":CR=2:GOSUB 1400:GOSUB 9400:X$=TEA$+SPACE$(31-LEN(TEA$)):UIX#=0
  590. 12610  GET 2:IF EOF(2) THEN FG=0:RETURN ELSE IF ASC(N$)=0 THEN UIX#=LOC(2):GOTO 12610
  591. 12620  IF X$<>N$ THEN 12610 ELSE FG=-1:RETURN
  592. 12630  IF UIX# THEN GET 2,UIX# ELSE UIX#=LOC(2)
  593. 12631  RETURN
  594. 12800  A$="For future calls, set your PASSWORD (not IBMPC)":GOSUB 1500:IF Q=0 THEN 12800 ELSE IF LEN(B$(1))>15 THEN A$="15"+TM$:GOSUB 1400:GOTO 12800 ELSE Z$=B$(1):GOSUB 5000:LSET PW$ = Z$:RETURN
  595. 12900  LSET N$=NAM$:LSET OP$=MKI$(0)+MKI$(0)+MKI$(-1)+MKI$(64)+STRING$(4,0)+CHR$(PL)+STRING$(1,0):LSET UDL$=MKI$(0):LSET UUL$=MKI$(0):LSET SL$=MKI$(TFA):LSET ET$=MKI$(0):RETURN
  596. 12950  A$="Type of system (C/R if IBMPC)"+A1$:GOSUB 1500:IF Q=0 THEN LSET MA$="IBMPC" ELSE LSET MA$=B$(1)
  597. 12960  A$="CITY and STATE"+A1$:GOSUB 1500:IF Q=0 THEN 12960 ELSE Z$=B$(1):GOSUB 5000:RETURN
  598. 13000  IF ERR=7 THEN 13650
  599. 13010  IF ERL=181 AND ERR=63 THEN RESUME 187
  600. 13020  IF ERL=187 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 187
  601. 13030  IF ERL=841 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 841
  602. 13033  IF ERL=825 AND ERR=5 THEN RESUME 830
  603. 13035  IF ERL=954 AND ERR=5 THEN JJ=JJ-LEN(FH$):FH$=TA$:RESUME 954
  604. 13040  IF ERL=4744 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 4744
  605. 13045  IF ERL=5130 AND ERR=63 THEN RESUME 5160
  606. 13047  IF ERL=5150 AND ERR=62 THEN RESUME 5160
  607. 13050  IF ERL=5538 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 5539
  608. 13060  IF ERL=11025 AND (ERR=24 OR ERR=25 OR ERR=27) THEN QQ=FD:RESUME 11025
  609. 13070  IF ERL=11100 AND (ERR=24 OR ERR=25 OR ERR=27) THEN QQ=FD:RESUME 11100
  610. 13080  IF ERL=13110 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 13110
  611. 13085  IF ERL=20231 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=FD:RESUME 20233
  612. 13087  IF ERL=20242 AND ERR=62 THEN RESUME 20247
  613. 13090  IF ERR=58 THEN 13130
  614. 13100  IF(ERR=EC AND(FNTI!-TKA!<5))THEN EA=EA+1:IF EA>EB THEN 50000
  615. 13110  IF(ERR<>53 AND ERR<>57 AND ERR<> 61 AND ERR<> 64 AND ERR<> 69 AND LH)THEN LPRINT TK$;ERR;"  in line ";ERL" occurred at "TIME$+TH$+DATE$
  616. 13115  IF (ERR<>53 AND ERR<>57 AND ERR<>61 AND ERR<>64 AND ERR<>69) THEN A$=TK$+STR$(ERR)+" line "+STR$(ERL)+" at "+TIME$+TH$+DATE$:GOSUB 13670
  617. 13120  EC=ERR:IF FNTI!-TKA!>5 THEN EA=0 ELSE TKA!=FNTI!
  618. 13130  IF ERL=118 AND ERR=53 THEN 13550
  619. 13135  IF ERL=121 AND ERR=62 THEN 13550
  620. 13140  IF ERL=220 THEN RESUME 220
  621. 13150  IF(ERL=340 AND NOT BE)THEN OUT LCR,&H3:RESUME 335
  622. 13160  IF ERL=340 THEN RESUME 345
  623. 13170  IF ERL<1200 THEN RESUME 10595
  624. 13180  IF ERL=1420 AND ERR=57 THEN R1=INP(LSR):RESUME 1425
  625. 13190  IF ERL=1540 OR ERL=3736 OR ERL=20840 OR ERL=21280 OR ERL=21360 OR ERL=21420 THEN GOSUB 50500:IF INP(MSR)<128 THEN RESUME 10595
  626. 13200  IF ERL=1540 THEN RESUME 1540
  627. 13210  IF ERL=3530 THEN RESUME 3550
  628. 13220  IF ERL=3736 THEN RESUME 3736
  629. 13230  IF ERL=4797 THEN GOSUB 50500:GOSUB 13670:IF INP(MSR)<128 THEN RESUME 10595 ELSE RESUME 4797
  630. 13235  IF ERL=5140 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+PD$+"> missing!":GOSUB 5538:IF Z=1 THEN Z$=B$(1):GOSUB 5000:RESUME 5160 ELSE RESUME 5160
  631. 13240  IF ERL=5535 AND ERR=57 THEN R1=INP(LSR):RESUME 20015
  632. 13250  IF ERL=5535 THEN RESUME 5530
  633. 13260  IF ERL=6020 THEN RESUME 6080
  634. 13270  IF ERL=6050 AND ERR=52 THEN RESUME 6060
  635. 13280  IF ERL=10600 AND ERR=63 THEN 10595
  636. 13290  IF ERL=10112 THEN IF ERR=58 THEN OK=-1:RESUME 10113 ELSE RESUME 10113
  637. 13300  IF ERL=10115 THEN RESUME 10120
  638. 13310  IF ERL=10720 THEN IF ERR=53 OR ERR=64 THEN IF LN THEN RESUME 10845 ELSE A$="File doesn't exist or filespec invalid!":GOSUB 1400:RESUME 10700
  639. 13312  IF ERL=10986 AND ERR=58 THEN RESUME 10987
  640. 13314  IF ERL=10986 THEN A$="Tell the SYSOP that the "+Z$+" window is closed.":GOSUB 1400:RESUME 1200
  641. 13320  IF ERL=12005 THEN IF ERR=58 THEN OK=-1:RESUME 12010 ELSE RESUME 12010
  642. 13330  IF ERL=12020 THEN RESUME 12030
  643. 13340  IF ERL=12210 AND ERR=61 THEN GOSUB 13600:RESUME 1200
  644. 13350  IF ERL=10240 AND ERR=61 THEN GOSUB 13610:RESUME 1200
  645. 13355  IF ERL=20165 AND ERR=58 THEN RESUME 20167
  646. 13357  IF ERL=20165 THEN RESUME 20170
  647. 13360  IF ERL=20220 AND ERR=53 THEN RESUME 20225
  648. 13370  IF ERL=20220 AND ERR=58 THEN OK=-1:RESUME 20225
  649. 13372  IF ERL=20220 AND ERR=64 THEN A$="Invalid file name":GOSUB 1400:RESUME 20200
  650. 13375  IF ERL=20240 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+FB$+"> missing!":GOSUB 5538:RESUME 20247
  651. 13380  IF ERL=20440 AND ERR=53 THEN OK=-1:RESUME 20450
  652. 13385  IF ERL=20440 THEN IF ERR=64 OR ERR=69 THEN RESUME 20420 ELSE RESUME 20450
  653. 13390  IF ERL=20450 THEN OK=0:RESUME 20455
  654. 13400  IF ERL=20620 THEN OK=0:RESUME 20621
  655. 13405  IF ERL=20735 AND ERR=53 THEN RESUME 20737
  656. 13410  IF ERL=20840 THEN RESUME 20840
  657. 13420  IF ERL=21130 THEN OK=0:RESUME 21131
  658. 13430  IF ERL=21280 THEN RESUME 21280
  659. 13440  IF ERL=21360 THEN RESUME 21360
  660. 13442  IF ERL=21420 THEN RESUME 21420
  661. 13443  IF ERL=43030 AND ERR=58 THEN OK=-1:RESUME 43031
  662. 13445  IF ERL=43030 AND ERR=53 THEN RESUME 43031
  663. 13447  IF ERL=52000 AND ERR=53 THEN A$="Upload directory file is missing!  Please inform sysop.":GOSUB 1400:RESUME 1200
  664. 13450  IF 65535=ERL THEN 50000
  665. 13460  IF ERR=5 THEN 10595
  666. 13470  IF ERR=57 OR ERR=24 OR ERR=25 THEN GOSUB 50500:R1=INP(MSR):IF R1<128 THEN RESUME 10595
  667. 13480  IF ERR=61 THEN GOSUB 1400:A$="<< Disk is full -- operation terminated. >>":CR=2:GOSUB 1400:RESUME 1200
  668. 13490  IF ERR=71 THEN GOSUB 13630:RESUME 20020
  669. 13500  A$="Software bug found.":GOSUB 1400:A$="Tell the SYSOP that":GOSUB 1400:A$="Error "+STR$(ERR)+" occured in Line "+STR$(ERL)+".":GOSUB 1400:PRINT:RESUME 1200
  670. 13540  IF LJ THEN 13549
  671. 13543  IF NOT SH THEN IF CINT(UIX#)<1 THEN 13549
  672. 13545  GOSUB 56000:GOSUB 43050
  673. 13549  GOSUB 1900:CLOSE:OUT MCR,&H4:GOSUB 50510:OUT MCR,&H0:RUN 90
  674. 13550  CLS:LOCATE,,0:PRINT CA$+" file not found/invalid.  Create one with "+VA$+"'s utility program -- CONFIG.":GOSUB 50510:SYSTEM
  675. 13590  RETURN
  676. 13600  A$=TQ$+"USERS file.":GOSUB 1400:CLOSE 1,2:KILL UF$:NAME UI$ AS UF$:GOSUB 9400:RETURN
  677. 13610  A$=TQ$+"MESSAGES file.":GOSUB 1400:CLOSE 1,2:KILL MES$:NAME MN$ AS MES$:GOSUB 135:RETURN
  678. 13630  A$="The SYSOP left the drive door open.":GOSUB 1400:A$="File Menu not available.":GOSUB 1400:RETURN
  679. 13650  CLS:LOCATE,,0:PRINT"Not enough memory for RBBS-PC":GOSUB 50510:SYSTEM
  680. 13670  CLOSE 2:OPEN "R",2,CF$,64:FIELD 2,64 AS CL$:A$=STRING$(5,TB$)+A$:LSET CL$=A$:CDX=CDX+1:PUT 2,CDX:A$=TA$:RETURN
  681. 14000  RETURN 320
  682. 14500  PRINT#3,"ATQ1E1C0H1M0":GOSUB 50510:CLOSE 3:RETURN
  683. 15000  SG=NOT SG:IF PRT THEN GOSUB 49000
  684. 15010  GET 1,1:MID$(R$,54,2)=STR$(SG):PUT 1,1:GOTO 43080
  685. 20000  GOSUB 1400:A$="Entering File Subsystem...":GOSUB 1400
  686. 20015  FH$=TA$:GOSUB 950:IF LJ GOTO 20020 ELSE GOSUB 1400
  687. 20020  GOSUB 41050:NH=0:IF NOT XPR THEN F$=MH$:GOSUB 43030:GOSUB 45000
  688. 20030  GOSUB 1400:A$="File Function <D,G,H,L,N,Q,U,?>":CR=1:GOSUB 1500:IF Q=0 THEN 20015
  689. 20050  LN=FD:Z$=B$(1):GOSUB 5000:FF=INSTR("DGHLNQU?",Z$):IF FF=0 THEN J=1:GOSUB 1360:GOTO 20015 ELSE IF UG<FS(FF) THEN VD$="File "+Z$:GOSUB 1380:GOTO 20020
  690. 20070  ON FF GOSUB 20180,20100,20110,20150,53000,20090,20400,20130:GOTO 20015
  691. 20090  RETURN 20095
  692. 20095  RETURN 1200
  693. 20100  RETURN 10560
  694. 20110  F$=HE5$:GOSUB 1790:RETURN
  695. 20130  F$=HE6$:GOSUB 1790:RETURN
  696. 20150  IF SH THEN ED=LEN(FA$) ELSE ED=LEN(FA$)-1
  697. 20153  LD=TBA:IF Q<2 THEN Q=2:B$(Q)=TA$
  698. 20160  X=2:QX=Q
  699. 20161  IF X>QX THEN 2210
  700. 20162  FOR SM=1 TO ED:F$=MID$(FA$,SM,1)+":"+DIR$+B$(X)
  701. 20165  GOSUB 43030:NAME F$ AS F$
  702. 20167  IF LN THEN GOSUB 7000:GOTO 20175 ELSE GOSUB 6000:GOTO 20175
  703. 20170  NEXT:A$="Directory # "+B$(X)+" unavailable!.":CR=2:GOSUB 1400
  704. 20175  X=X+1:GOTO 20161
  705. 20180  IF Q>1 THEN B=2:GOTO 20202
  706. 20200  A$=F8$+"download":GOSUB 1500:B=1:IF Q=0 THEN RETURN
  707. 20202  A=1:IF Q>B THEN A=VAL(B$(B+1)):IF A<1 THEN A=1
  708. 20205  Z$=B$(B):VD$="Download ":FOR X=A TO LEN(FA$)-1:GOSUB 20741:ON A GOTO 20220,20231
  709. 20220  OK=0:NAME F$ AS F$
  710. 20225  IF OK THEN 20235
  711. 20230  NEXT
  712. 20231  A$="<"+B$(B)+"> not found! Type L for directory.":CR=2:GOSUB 1400:IF LH THEN LPRINT"     File "+B$(B)+" not found.
  713. 20233  RETURN 20020
  714. 20235  Z$=F$:A$=MES$:GOSUB 43040:A$=MN$:GOSUB 43040:A$=CG$:GOSUB 43040:A$=UF$:GOSUB 43040:A$=UF$+".BAK":GOSUB 43040:A$=CF$:GOSUB 43040:A$=RC$:GOSUB 43040:A$=CH$:GOSUB 43040:A$=PD$:GOSUB 43040:A$=FB$:GOSUB 43040:FH$="(D) "+Z$
  715. 20240  CLOSE 2:OPEN FB$ FOR INPUT AS 2:N$=Z$:GOSUB 20282:D1$=DR$:P1$=PRE$:S1$=EXT$
  716. 20242  IF EOF(2) THEN 20247 ELSE INPUT #2,N$,FJ,FPW$:GOSUB 20282
  717. 20243  IF DR$<>"" AND DR$<>D1$ THEN 20242 ELSE A$=P1$:Z$=PRE$:GOSUB 20285:IF OK THEN 20242 ELSE A$=S1$:Z$=EXT$:GOSUB 20285:IF OK THEN 20242 ELSE 20244
  718. 20244  IF UG<FJ THEN 20245 ELSE IF FPW$=TA$ THEN 20247 ELSE Z$=FPW$:GOSUB 5000:FPW$=Z$:IF FPW$=PW$ THEN 20247 ELSE A$="Enter PASSWORD for downloading "+F$:GOSUB 1500:Z$=B$(1):GOSUB 5000:IF Z$=FPW$ THEN 20247
  719. 20245  VD$="DownLoad "+F$:GOSUB 1380:RETURN 20015
  720. 20247  BL=0:EXT$=RIGHT$(F$,4):IF INSTR(".EXE.COM.OBJ.WKS",EXT$) OR MID$(EXT$,3,1)="Q" OR (BD AND EXT$=".BAS") THEN A$="This is a binary file and requires XMODEM transfer":GOSUB 1400:BL=-1
  721. 20248  A$="Download"+FU$:CR=1:GOSUB 1500:IF Q=0 THEN 20248 ELSE Z$=B$(1):FT$=Z$:GOSUB 5000
  722. 20260  ON INSTR("XAQ",Z$) GOTO 20290,20340,20289:GOTO 20248
  723. 20282  Z$=N$:GOSUB 5000:IF MID$(Z$,2,1)=":" THEN DR$=LEFT$(Z$,1):S=3 ELSE DR$="":S=1
  724. 20283  P=INSTR(Z$+".","."):PRE$=MID$(Z$,S,P-S):EXT$=MID$(Z$,P+1):RETURN
  725. 20285  OK=0:K=0:L=LEN(A$)
  726. 20286  K=K+1:IF K>L THEN 20288 ELSE B$=MID$(Z$,K,1):IF B$="*" THEN 20289
  727. 20287  IF B$<>"?" AND MID$(A$,K,1)<>B$ THEN OK=-1:GOTO 20289 ELSE 20286
  728. 20288  IF L<LEN(Z$) AND MID$(Z$,L+1,1)<>"*" THEN OK=-1
  729. 20289  RETURN
  730. 20290  CLOSE 2:OPEN "R",2,F$,128:TLA=165:GOSUB 20750:IF NOT BE THEN GOSUB 1400:A$=T3$+".":GOSUB 1400:CR=2:GOSUB 50510
  731. 20310  A$="Ready to send. Enter <Ctrl X> to abort transfer...":GOSUB 1400:GOSUB 50510:GOSUB 21300:CR=2:A$=TA$:GOTO 20390
  732. 20340  IF BL THEN 20235 ELSE CLOSE 2:OPEN "I",2,F$:GOSUB 20750:A$=TJ$:MID$(A$,9,1)="X":CR=2:GOSUB 1400:A$="Ready to send. Open download file. Enter <CR> to start":CR=1:GOSUB 1500
  733. 20380  ABT$=CAN$:STI=-1:GOSUB 6030:ABT$=CHR$(11):CR=2:IF RET THEN A$="<*>Download aborted<*>":SN=FD:GOTO 20390
  734. 20381  A$=CHR$(26):GOSUB 1400:IF NOT LJ THEN FOR X=1 TO 5:PRINT#3,BA$:GOSUB 50510:NEXT
  735. 20385  A$="<*>End of file<*>":SN=TBA
  736. 20390  GOSUB 1400:GOSUB 50600:RETURN
  737. 20400  IF Q=2 THEN B$(1)=B$(2):GOTO 20430
  738. 20420  CR=1:A$=F8$+"upload":GOSUB 1500:IF Q=0 THEN RETURN
  739. 20430  Z$=B$(1):VD$="Upload ":FOR X=1 TO LEN(FA$):GOSUB 20741:ON A GOTO 20440,20420
  740. 20440  OK=0:NAME F$ AS F$
  741. 20450  IF NOT OK THEN 20460
  742. 20455  NEXT
  743. 20460  IF NOT OK AND UG>=UPS THEN A$="File exists, overwrite it":GOSUB 1500:IF YES THEN OK=-1:GOTO 20475
  744. 20465  F$=RIGHT$(FA$,1)+":"+Z$:IF NOT OK THEN CLOSE 2:A$="File <"+Z$+"> exists! Use a unique name.":CR=2:GOSUB 1400:GOTO 20420
  745. 20475  Z$=LEFT$(F$,2)+UB$:CR=2:GOSUB 1400:GOSUB 52000:A$="Upload disk has"+AD$:CR=2:GOSUB 1400:FH$="(U) "+F$:GOSUB 950
  746. 20480  A$="Upload"+FU$:CR=1:GOSUB 1500:IF Q=0 THEN 20480 ELSE Z$=B$(1):FT$=Z$:GOSUB 5000
  747. 20500  ON INSTR("XAQ",Z$) GOTO 20530,20560,20735:GOTO 20480
  748. 20530  IF NOT BE THEN GOSUB 1400:A$=T3$+", then start XMODEM.":CR=2:GOSUB 1400
  749. 20540  A$="Ready to receive. Enter <Ctrl-X> to abort transfer...":GOSUB 1400:GOSUB 50500:OK=-1:GOSUB 20860:X#=0:IF OK THEN 20700 ELSE 20730
  750. 20560  A$="NOTE--transfer MUST Terminate with a <Ctrl-K>.":CR=2:GOSUB 1400:A$="Ready to receive ...":GOSUB 1400:OK=0:X=FD:CLOSE 2:OPEN "O",2,F$:IF PRT THEN PRINT"<Esc> from SYSOP will abort.
  751. 20600  WHILE NOT EOF(3):GOSUB 42000:IF LOF(3)<128 THEN PRINT#3,XA$;:X=TBA
  752. 20610  X$=INPUT$(LOC(3),3):IF INSTR(X$,ABT$)THEN 20650
  753. 20620  OK=-1:PRINT#2,X$;
  754. 20621  IF NOT OK THEN 20670
  755. 20630  WEND:GOSUB 42000:IF X THEN X=FD:PRINT#3,XON$;
  756. 20640  IF INKEY$=ESC$THEN 20745 ELSE 20600
  757. 20650  X=INSTR(X$,ABT$):IF X<>1 THEN PRINT#2,LEFT$(X$,X-1) ELSE IF NOT OK THEN 20730
  758. 20660  A$="Upload complete.":GOSUB 1400:X#=128:GOTO 20700
  759. 20670  A$=XA$+"System error! Upload aborted. Enter <Ctrl-K> to continue
  760. 20675  GOSUB 1400:GOSUB 50510:PRINT#3,XON$;
  761. 20680  WHILE NOT EOF(3):X$=INPUT$(LOC(3),3):IF INSTR(X$,CHR$(11))THEN 20730
  762. 20685  GOSUB 42000:WEND:GOTO 20680
  763. 20700  X#=(CDBL(LOC(2))*128)+X#:CLOSE 2:OPEN "A",2,RIGHT$(FA$,1)+":"+UB$:F$=MID$(F$,3)
  764. 20710  A$="Enter 40 char. description of "+F$+"(begin with / if for SYSOP only).":GOSUB 1400:A$=" |----+---1+0---+---2+0---+---3+0---+---4+0":GOSUB 1400:GOSUB 1500:IF LEN(B$(1))>40 THEN 20710
  765. 20720  IF LEFT$(B$(1),1)="/"THEN 20725 ELSE PRINT#2,USING"\           \########  &  &";F$;X#;LEFT$(DATE$,6)+RIGHT$(DATE$,2);B$(1)
  766. 20725  CLOSE 2:Y$=" >> uploaded << ":ULD=ULD+1:GOSUB 50610:RETURN
  767. 20730  A$="Upload aborted.":GOSUB 1400
  768. 20735  CLOSE 2:KILL F$
  769. 20737  RETURN
  770. 20741  A=1:GOSUB 5000:F$=MID$(FA$,X,1)+":"+Z$:IF INSTR(F$,"?") OR INSTR(F$,"*") OR INSTR(F$,TB$) OR INSTR(F$,CA$) OR INSTR(3,F$,":") OR MID$(F$,LEN(F$),1)= "." THEN A=2:RETURN
  771. 20742  IF LEN(Z$)=>3 THEN IF INSTR("COM1COM2LPT1LPT2LPT3PRNCONAUX",Z$) THEN NI=VB:VD$=VD$+Z$:GOSUB 1380
  772. 20743  RETURN
  773. 20745  A$=XA$+"SYSOP aborted upload.  Stop transmission.  Enter <Ctrl-K> to continue":GOTO 20675
  774. 20750  CNT#=FIX(LOF(2)/128):X#=LOF(2)/128:IF CNT#<>X#THEN X#=X#+1
  775. 20780  GOSUB 1400:A$="File size is"+STR$(INT(X#))+" blocks.":FH$=FH$+RIGHT$(A$,(LEN(A$)-12)):GOSUB 1400:IF BPS=-2 THEN X#=X#*TLA/45 ELSE IF BPS=-3 THEN X#=X#*TLA/120 ELSE X#=X#*TLA/30
  776. 20785  IF LOF(2)<1 THEN 20015
  777. 20790  GOSUB 950:A$="Transfer time:"+STR$(INT(X#/60))+" min.,"+STR$(X#MOD 60)+" sec.":GOSUB 1400:GOSUB 41000:IF(INT(X#/60)+1)>INT(TR!)THEN A$="Insufficient time left!":GOSUB 1400:GOSUB 20015 ELSE RETURN
  778. 20810  GOSUB 42000:Y$=TA$:DE!=FNTI!+2
  779. 20840  IF NOT EOF(3)THEN Y$=INPUT$(LOC(3),3):RETURN
  780. 20850  IF FNTI!<DE! THEN 20840 ELSE Y$=TA$:RETURN
  781. 20860  IF PRT THEN PRINT:PRINT TW$
  782. 20875  GOSUB 50510:IF NOT BE THEN OUT LCR,3:GOSUB 21280
  783. 20900  X$=TA$:SEC=1:SO=0:CLOSE 2:OPEN "R",2,F$,128:FIELD 2,128 AS Z$:PRINT #3,NAK$;
  784. 20920  FOR X=1 TO 10:Y$=INKEY$:IF Y$=ESC$THEN 21270 ELSE GOSUB 20810
  785. 20930  IF LEFT$(Y$,1)=SOH$THEN 21020
  786. 20940  IF LEFT$(Y$,1)=EOT$THEN 21220
  787. 20950  IF LEFT$(Y$,1)=CAN$THEN 21230
  788. 20960  IF Y$<>TA$ THEN GOSUB 21280:GOTO 20920
  789. 20970  NEXT:PRINT#3,NAK$;:IF PRT THEN PRINT"Timeout
  790. 20990  GOTO 20920
  791. 21000  GOSUB 20810:IF Y$=TA$ THEN PRINT"Timeout":GOTO 21040
  792. 21020  X$=X$+Y$:IF LEN(X$)<132 THEN 21000
  793. 21040  IF LEN(X$)=132 THEN 21090
  794. 21050  IF LEN(X$)>132 THEN 21180
  795. 21060  IF X$=EOT$THEN 21220
  796. 21070  IF X$=CAN$THEN 21230
  797. 21080  GOTO 21170
  798. 21090  IF SEC<>ASC(MID$(X$,2,1))THEN 21200
  799. 21100  IF(SEC XOR 255)<>ASC(MID$(X$,3,1))THEN 21210
  800. 21110  CK=0:FOR I=1 TO 128:CK=CK+ASC(MID$(X$,I+3,1)):NEXT:CK=(CK AND 255):IF CK<>ASC(MID$(X$,132,1))THEN 21190
  801. 21120  SO=SO+1:IF PRT THEN PRINT"Received Block #"SO;
  802. 21130  PRINT#3,ACK$;
  803. 21131  LSET Z$=MID$(X$,4):PUT 2:IF NOT OK THEN 21230
  804. 21145  SEC=255 AND(SEC+1):IF PRT THEN PRINT"- verified
  805. 21150  X$=TA$:CK=0:GOTO 20920
  806. 21155  IF PRT THEN PRINT XEM$;
  807. 21160  SO=SO+1:IF PRT THEN PRINT SO
  808. 21165  PRINT#3,NAK$;:SO=SO-1:GOTO 21150
  809. 21170  XEM$="Short Block in #":GOTO 21155
  810. 21180  XEM$="Long Block in #":GOTO 21155
  811. 21190  XEM$="Checksum"+E1$:GOTO 21155
  812. 21200  XEM$="Block #"+E1$:GOTO 21155
  813. 21210  XEM$="Complement"+E1$:GOTO 21155
  814. 21220  IF PRT THEN PRINT"File Closed.
  815. 21225  PRINT#3,ACK$;:GOTO 21250
  816. 21230  IF PRT THEN PRINT"Transfer Aborted.
  817. 21240  OK=FD:PRINT#3,CAN$;CAN$;
  818. 21250  IF NOT BE THEN GOSUB 21280:A$="Enter C/R after switching to E,7,1":GOSUB 1400:GOSUB 50510:OUT LCR,26:GOSUB 1500
  819. 21265  RETURN
  820. 21270  IF PRT THEN PRINT TT$
  821. 21275  GOSUB 21280:GOTO 21240
  822. 21280  WHILE NOT EOF(3):DF$=INPUT$(LOC(3),3):WEND:RETURN
  823. 21300  IF PRT THEN PRINT:PRINT TW$
  824. 21320  IF NOT BE THEN GOSUB 50510:OUT LCR,3
  825. 21330  SEC=0:GOSUB 21280:FIELD 2,128 AS X$:SO=0
  826. 21350  WHILE NOT EOF(3)
  827. 21360  Y$=INPUT$(1,3):IF Y$=CAN$THEN 21560
  828. 21380  IF Y$=NAK$THEN 21480
  829. 21390  WEND:GOSUB 42000:Y$=INKEY$:IF Y$=ESC$THEN 21540 ELSE 21350
  830. 21410  WHILE NOT EOF(3)
  831. 21420  Y$=INPUT$(1,3):IF Y$=ACK$THEN 21470
  832. 21440  IF Y$<>NAK$ THEN 21450
  833. 21443  IF PRT THEN PRINT "- transmission error":PRINT"***Re-";
  834. 21445  SO=SO-1:GOTO 21490
  835. 21450  IF Y$=CAN$THEN 21560
  836. 21460  WEND:GOSUB 42000:Y$=INKEY$:IF Y$=ESC$THEN 21540 ELSE 21410
  837. 21470  IF PRT THEN PRINT "- verified
  838. 21480  IF LOC(2)<LOF(2)/128 THEN GET 2:SEC=255 AND(SEC+1):GOTO 21490
  839. 21482  IF PRT THEN PRINT"End of file
  840. 21485  GOTO 21530
  841. 21490  SO=SO+1:IF PRT THEN PRINT"Sending Block #"SO;
  842. 21502  PRINT#3,SOH$;CHR$(SEC);CHR$(SEC XOR 255);X$;
  843. 21503  CK=0:FOR I=1 TO 128:CK=CK+ASC(MID$(X$,I,1)):NEXT:CK=(CK AND 255)
  844. 21504  IF CK>256 THEN CK=CK-256:GOTO 21504
  845. 21510  PRINT#3,CHR$(CK);:GOSUB 21280:GOTO 21410
  846. 21530  PRINT#3,EOT$;:FOR X=1 TO 100:GOSUB 20810:IF Y$=ACK$THEN 21550 ELSE Y$=INKEY$:IF Y$=ESC$ THEN 21540
  847. 21535  NEXT:GOTO 21230
  848. 21540  IF PRT THEN PRINT TT$
  849. 21545  Y$=CAN$:PRINT#3,CAN$;CAN$;:GOTO 21250
  850. 21550  IF PRT THEN PRINT"Transmission Ended.
  851. 21555  SN=TBA:GOTO 21250
  852. 21560  SN=FD:IF PRT THEN PRINT"Receiver aborted transmission":GOTO 21250 ELSE RETURN
  853. 30000  A$=CHR$(12)+"SYSOP is active....Now in CHAT mode...":CR=2:GOSUB 1400:GOSUB 50500:A$="Hello, this is "+NA$+TB$+NB$+". Sorry to break in but....":CR=2:GOSUB 1400:GOSUB 4770:RETURN
  854. 31000  ON ERROR GOTO 0:CLS:IF MC THEN GOSUB 60400
  855. 31010  SYSTEM
  856. 32000  IF MC THEN GOSUB 60400
  857. 32010  CLS:CLEAR:END
  858. 33000  LH=NOT LH:IF PRT THEN GOSUB 49000
  859. 33010  GET 1,1:MID$(R$,56,2)=STR$(LH):PUT 1,1:GOTO 43080
  860. 33040  AC=NOT AC:IF PRT THEN GOSUB 49000
  861. 33050  GET 1,1:MID$(R$,52,2)=STR$(AC):PUT 1,1:GOTO 43080
  862. 39000  IF PRT THEN PRT=FD:LOCATE,,0:CLS:RETURN
  863. 39020  LOCATE 23,1,0:PRINT"SNOOP ON...  FREE SPACE="FRE("A"):PRINT"F1-DOS F2-BASC F3-PRNT F4-PGE F5-ON/LN F6-AVA F7-S NX F8-TMP S F9-SNOP F10-CHAT";:GOSUB 953:PRT=TBA:RETURN
  864. 41000  GOSUB 41010:IF TR!<0 THEN TR!=0:RETURN 10555 ELSE RETURN
  865. 41010  A!=FRE("A"):IF FNTI!>TI!THEN TMA!=FNTI!-TI! ELSE TMA!=FNTI!+86400-TI!
  866. 41020  TR!=(TV!-TMA!)/60:TR$=STR$(INT(TR!)):RETURN
  867. 41050  GOSUB 41000:A$="Time remaining = "+TR$+" min.":GOTO 2210
  868. 41070  CR=2:GOSUB 1400:A$="Access level"+STR$(UG)+" granted.":GOTO 2210
  869. 42000  IF LJ THEN RETURN:IF CTI!>TI!THEN CTI!=TI!+(10*60)
  870. 42010  IF INP(MSR)<128 THEN 10595
  871. 42020  RETURN
  872. 43000  IF NOT GA THEN A$=TZ$:GOTO 43020
  873. 43005  IF NOT BE THEN A$=TZ$+" in 7 bit mode":GOTO 43020
  874. 43010  GR=NOT GR:A$="Graphics mode ":IF GR THEN A$=A$+"on" ELSE A$=A$+"off
  875. 43020  GOTO 2210
  876. 43030  OK=0:IF (BE AND GA AND GR AND LEN(F$)<10) THEN GF$=F$+"G":NAME GF$ AS GF$
  877. 43031  IF OK THEN F$=GF$
  878. 43035  RETURN
  879. 43040  IF LEFT$(Z$,LEN(A$))=A$ THEN RETURN 20245 ELSE RETURN
  880. 43050  FIELD 2,55 AS CL$,3 AS HHH$,3 AS MMM$, 3 AS SSS$:LSET CL$=MID$(NG$,65,55):LSET HHH$=STR$(HHH):LSET MMM$=STR$(MMM):LSET SSS$=STR$(SSS):CDX=CDX+1:PUT 2,CDX:FIELD 2,64 AS CL$:LSET CL$=LEFT$(NG$,64):CDX=CDX+1:PUT 2,CDX
  881. 43060  IF FE$=NA$ AND LK$=NB$ THEN SH=-1 ELSE SH=0
  882. 43070  GET 1,1:MID$(R$,58,2)=STR$(WI):MID$(R$,60,2)=STR$(BE):MID$(R$,62,2)=STR$(BPS):MID$(R$,64,2)=STR$(UC):MID$(R$,66,5)="     ":KG=-1:GOSUB 41000:MID$(R$,66,5)=STR$(TR!):MID$(R$,71,2)=STR$(GR):MID$(R$,73,2)=STR$(SH)
  883. 43080  PUT 1,1:RETURN
  884. 44000  GET 1,1:WI=VAL(MID$(R$,58,2)):BE=VAL(MID$(R$,60,2)):BPS=VAL(MID$(R$,62,2)):UC=VAL(MID$(R$,64,2)):TV!=VAL(MID$(R$,66,5)):GR=VAL(MID$(R$,71,2)):SH=VAL(MID$(R$,73,2)):IF BPS=-3 THEN Q=&H60:GOSUB 1654
  885. 44010  TI!=FNTI!:IF TV!<60 THEN TV!=120
  886. 44020  IF SH THEN FE$=PB$:LK$=PC$:RETURN
  887. 44030  FE=INSTR(21,R$," "):JJ=INSTR(FE+1,R$," "):FE$=MID$(R$,21,FE-21):LK$=MID$(R$,FE+1,JJ-(FE+1)):GOSUB 12550:RETURN
  888. 45000  STI=0:GOSUB 6000:STI=-1:RETURN
  889. 45010  SI=-1:GOSUB 1500:SI=0:GOTO 2210
  890. 49000  IF AVA THEN FH$="AVL " ELSE FH$=TE$
  891. 49010  IF AC THEN FH$=FH$+"ANY " ELSE FH$=FH$+TE$
  892. 49020  IF LH THEN FH$=FH$+"LPT " ELSE FH$=FH$+T2$
  893. 49030  IF SG THEN FH$=FH$+"SYS
  894. 49040  GOSUB 950:RETURN
  895. 50000  A$="Fatal error...System going down":GOSUB 1400:GOTO 10595
  896. 50400  A$=TB$:GOSUB 1400:A$="<A>bort, <C>ontinue, <D>elete, <E>dit, <I>nsert, <L>ist, <M>argin, <S>ave":GOTO 2210
  897. 50500  DE!=FNTI!+1:GOTO 50520
  898. 50510  DE!=FNTI!+3
  899. 50520  IF FNTI!<DE! THEN 50520 ELSE RETURN
  900. 50600  IF SN=TBA THEN DLD=DLD+1:Y$=" Downloaded " ELSE Y$=" Aborted "
  901. 50610  IF NOT LJ THEN GOSUB 482:Z$=SPACE$(5)+F$+Y$+"at "+TIM$+" using "+FT$:GOSUB 5538
  902. 50620  RETURN
  903. 52000  CLS:FILES Z$:AD$=TA$:FOR X=1 TO 25:AD$=AD$+CHR$(SCREEN(3,X)):NEXT:GOSUB 49000:IF INSTR(AD$,"Bytes free")THEN RETURN
  904. 52030  AD$=" 2010 -- No data available":IF CE AND DA>1 THEN 52040 ELSE RETURN
  905. 52040  DR=INSTR("ABCDEFGHI",LEFT$(Z$,1)):IF DR=0 THEN RETURN
  906. 52060  CALL UTSPACE(DR,AE,TNA,BH,SP):AE!=AE:BH!=BH:SP!=SP:TOA!=AE!*BH!*SP!:AD$=STR$(TOA!)+" Bytes free":RETURN
  907. 53000  IF Q>1 THEN 53030
  908. 53010  A$="Enter directory to be searched or ALL":GOSUB 1500:IF Q=0 THEN RETURN
  909. 53020  B$(2)=B$(1):Q=2
  910. 53030  ED=LEN(FA$)-1:LD=TBA:LN=TBA:Z$=B$(2):GOSUB 5000:IF Z$=TP$ OR Z$="ALL" THEN 53070
  911. 53060  GOSUB 20160:LN=FD:RETURN
  912. 53070  G=2:J=2:FOR SM=1 TO ED:B$(2)=MID$(FA$,SM,1)+":"+DIR$+"???.":GOSUB 10720:CLS:NEXT:GOSUB 49000:QX=G:X=3:SV$=DIR$:DIR$=TA$:GOSUB 20161:DIR$=SV$:LN=FD:RETURN
  913. 56000  CLOSE 2:OPEN "R",2,CF$,64:FIELD 2,64 AS CL$:RETURN
  914. 57000  A$=TA$:GOSUB 1400:GOSUB 56000:UDX=CDX
  915. 57005  IF UDX <1 OR RET THEN RETURN
  916. 57010  GET 2,UDX:A$=CL$:IF LEFT$(A$,3)=T2$ THEN 57030
  917. 57015  IF INSTR(A$,"on at")=0 THEN 57030
  918. 57025  UDX=UDX-1:GET 2,UDX:A1$=LEFT$(CL$,15):IF SH OR LEFT$(A1$,3)<>T2$ THEN A$=A$+A1$
  919. 57027  GOTO 57035
  920. 57030  IF NOT SH THEN 57045
  921. 57035  GOSUB 1400:IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
  922. 57045  UDX=UDX-1:GOTO 57005
  923. 58000  SH=NOT SH:C.C=CSRLIN:C.L=POS(0):LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:IF SH THEN UG=SE:PRINT TS$+"GRANTED"; ELSE UG=HUG:PRINT TS$+"REMOVED";
  924. 58020  GOSUB 50510:LOCATE C.C,C.L:GOSUB 49000:RETURN
  925. 60000  IF LEN(FK$) <> 2 THEN RETURN
  926. 60010  IX=ASC(RIGHT$(FK$,1)):IF IX<59 OR IX>68 THEN RETURN ELSE IX=IX-58:ON IX GOSUB 31000,32000,33000,33040,14000,9500,15000,58000,39000,30000:RETURN
  927. 60200  DEF SEG=0:MC=PEEK(&H1FE)+256*PEEK(&H1FF):RETURN
  928. 60240  BX=-4:AX=&H1:IF CP$="COM2" THEN BX=-3
  929. 60270  GOTO 60510
  930. 60310  AX=&H701:BX=0:GOTO 60510
  931. 60400  BX=-4:AX=&H100:IF CP$="COM2" THEN BX=-3
  932. 60410  GOTO 60510
  933. 60430  AX=&HB01:BX=0:GOTO 60510
  934. 60450  AX=&HB00:BX=0:GOTO 60510
  935. 60510  DEF SEG=MC:IF CE THEN 60550
  936. 60520  PRINT"Make statement # 60540 executable."
  937. 60540  'CALL CO(AX,BX):RETURN:' Required to be executable under the interperter but will cause errors if left executable and run through the BASIC compiler.
  938. 60550  CALL ABSOLUTE(AX,BX,CO):RETURN
  939. 62500  GOSUB 41000:KB=0:RE=0:IF NH THEN 4625
  940. 62501  IF UH THEN A$="More (Y),N,NS,RE,K" ELSE A$="More (Y),N,NS,RE
  941. 62502  GOSUB 1500:IF NO THEN 4650
  942. 62505  IF KB AND (UH OR SH) THEN IF UG>=MD(8) THEN GOSUB 62520:GOSUB 3950:GOSUB 62530:GOTO 4625 ELSE VD$="MainMenu R) Func 8":GOSUB 1380:GOTO 4625
  943. 62510  IF NOT RE THEN 4625
  944. 62515  IF UG<MD(3) THEN VD$="MainMenu R) Func 3":GOSUB 1380:GOTO 4625 ELSE IF LEFT$(SUB$,3)<>"(R)" THEN SUB$="(R)"+LEFT$(SUB$,22)
  945. 62516  T$=FI$:FI$=NAM$:GOSUB 62520:GOSUB 2000:GOSUB 62530:GOTO 4625
  946. 62520  SQ=Q:SB$=B$:SLI=LI:SL=S:SNS=NH:SR=R:RETURN
  947. 62530  Q=SQ:B$=SB$:LI=SLI:S=SL:NH=SNS:R=SR:KB=0:RE=0:RETURN
  948. 64000  LF=-1:TA$="":TB$=" ":TC$="  ":T2$="   ":TE$="    ":TF$=" copied...":TG$=" is available between":TH$=" on ":TI1$=" there are no bulletins today.":TJ$="* <Ctrl K> to abort. <Ctrl S> to suspend *":TK$="+++ Error
  949. 64010  TM$=" Char. Max.":TN$=":300,E,7,1,RS,CD,DS":TW$="<Esc> by SYSOP causes early termination. <<<":TP$="All":TQ$="Disk full--restoring ":TZ$="Graphics unavailable":T1$="Change to 450 baud":T5$=":300,N,8,1,RS,CD,DS"
  950. 64020  T3$="Switching to N,8,1 for binary transfer.  You do the same":TS$="Temporary SYSOP Privileges ":TT$="Transfer aborted by <Esc> key":TU$="^READ^":E1$=" Error in #":F8$="Enter full filename to ":FU$=" type <X>modem, <A>scii, <Q>uit
  951. 64025  LG$(1)="Registration Check Failed":LG$(2)="Sysop name attempted":LG$(3)="Locked out attempt":LG$(4)="Password Attempt Failed":P$="Password":VB$="RBBS-PC VERSION ":K1$="<K>ill unneeded ones.":LG$(5)="Automatic Lockout completed":RETURN
  952.